1

这是一个简化的示例:

class A
{
    enum {OFFSET = 4};  //Due to packing

    bool m_bool;
};

template<class T>
class B : public A
{
    MyClass<T> m_class;
};

现在假设 A 类可以通过 MyClass 的基类使用 MyClass 功能的子集,我想做的是验证关于“m_class”相对于 A 类实例的位置的假设。

我在 B 类的成员函数中尝试了以下代码,但它给出了错误(“预期的常量表达式”):

static_assert ((byte *)nullptr + OFFSET ==
    (byte *)&((B<T> *)nullptr)->m_class, "Error 'm_class' incorrectly located!");

对于当前版本的编译器来说,这是否过于雄心勃勃?

4

0 回答 0