类成员变量的decltype,是否被禁止?为什么?

时间:2011-10-28 08:12:32

标签: c++ c++11 decltype

我可以写

int a;
decltype(a) b;

但我的编译器(Microsoft Visual Studio 2010,cl版本16.00.40219.01)禁止我

class A
{
   int a;
   decltype(a) b;// error C2327: 'A::a' : is not a type name, static, or enumerator
};

对于ONLINE_EVALUATION_BETA2,Comeau C / C ++ 4。3。10。1(2008年10月6日11:28:09)给出了类似的错误。

"ComeauTest.c", line 7: error: a nonstatic member reference must be relative to a
          specific object
     decltype(a) b;
              ^

这种行为的理由是什么?

1 个答案:

答案 0 :(得分:3)

是的,这是有效的。在未评估的操作数(decltypesizeofnoexcept,...的操作数)中,您可以在成员函数之外命名非静态数据成员。

您尝试的那些编译器尚不支持此功能。