我正在使用Visual Studio 2010
SP1。以下代码使编译器崩溃:
template <typename T>
class MyClass
{
public:
typedef int my_int;
const my_int foo();
};
template <typename T>
const auto MyClass<T>::foo() -> my_int
// auto MyClass<T>::foo() -> const my_int // THIS WORKS!
{
return my_int(1);
}
int main()
{
MyClass<int> m;
m.foo();
}
请注意修复问题的注释行。我在这里使用auto
正确吗(即const
限定符 on auto
)?解决方法本质上是否完全相同(即我可以安全地使用它,直到编译器的错误被修复)?最后,我是唯一遇到此问题的人吗,如果没有,我将提交错误报告。
注意:我意识到这里的 const 没有什么意义。我试图在一个较小的项目中复制该错误,在实际项目中,我正在返回const
对对象的引用。