通过指向成员的指针的嵌套访问的编译时评估期间的GCC错误

时间:2019-04-15 01:47:13

标签: c++ gcc g++ constexpr

这是Clang接受的,但GCC不接受:

struct inner {int x;};
constexpr struct outer {inner i;} o{};

// definition of x4 results in GCC error:
// "accessing value of 'o' through a 'const int' glvalue in a constant expression"
constexpr int x1 {             &(o.i)->*(&inner::x)}; // ok
constexpr int x2 { (&o->*(&outer::i)).x            }; // ok
          int x3 {&(&o->*(&outer::i))->*(&inner::x)}; // ok
constexpr int x4 {&(&o->*(&outer::i))->*(&inner::x)}; // error

在constexpr中允许这种访问吗?

在所有支持C ++ 11的GCC版本上,行为似乎都是相同的。

0 个答案:

没有答案