我可以写
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;
^
这种行为的理由是什么?
答案 0 :(得分:3)
是的,这是有效的。在未评估的操作数(decltype
,sizeof
,noexcept
,...的操作数)中,您可以在成员函数之外命名非静态数据成员。
您尝试的那些编译器尚不支持此功能。