以下代码在 msvc v120(预览版编译器)上编译
template<typename T>
struct X
{
int f() const { return 0; }
auto g() -> decltype(f()) const { return f(); }
};
int main()
{
X<int> x;
return 0;
}
gcc 4.8.1 抱怨该消息
不能在没有对象的情况下调用成员函数'int X::f() const
更改g
为
auto g() -> decltype(this->f()) const { return f(); }
解决了 gcc 的问题,但现在 msvc 输出
C2355: 'this' : 只能在非静态成员函数中引用
知道在这两种情况下我做错了什么吗?