代码
template <typename T>
struct Foo
{
int x_;
int x() const;
};
int a;
template <typename T>
decltype(a) Foo<T>::x() const
{
return x_;
}
int main()
{
}
在Visual Studio 2013中生成以下错误:
1>...\source.cpp(15): error C2244: 'Foo<T>::x' : unable to match function
definition to an existing declaration
1> ...\source.cpp(6) : see declaration of 'Foo<T>::x'
1> definition
1> 'unknown-type Foo<T>::x(void) const'
1> existing declarations
1> 'int Foo<T>::x(void) const'
但在Coliru's GCC上编译正常。此外,它在VS中编译为非模板类。我想这是由于Visual Studio的不完整性,如果确实如此,我确定其原因已经有了它的名字。我只是用我粗鄙的术语找不到它。发生了什么事?