使用clang 3.4(trunk),有没有办法用常量表达式计算基类的位移?
struct A { int a; };
struct B { int b; };
struct C: A, B {};
// cannot access base class of null pointer:
constexpr auto c_b_address = /*(size_t)*/ &(B&) *(C*)nullptr;
Run Code Online (Sandbox Code Playgroud) //#define NOT_WORKS
#define HOW(X) 0
struct A {
};
struct B {
A a;
};
struct C {
B b;
};
int main(int argc, char **argv) {
A B::*ba = &B::a; // ba is a pointer to B::a member
B C::*cb = &C::b; // cb is a pointer to C::b member
#ifdef NOT_WORKS
{ A C::*ca = &C::b::a; } // error: Symbol a could not be resolved / error: ‘C::b’ is not a class or namespace
{ A C::*ca = …Run Code Online (Sandbox Code Playgroud)