在创建 Matrix 类以方便地对数组进行多维访问时,我偶然发现了一个奇怪的错误:如果为 () 运算符创建多个重载,Visual Studio C++ 优化器(2010 和 2012)会崩溃。
我设法隔离了错误。将其作为单个代码文件放在项目中会使其崩溃:
template <class T>
class Foo
{
T& Foo::operator() (int i)
{
return 0;
}
// C1001 - Commenting this second overload makes the compiler work correctly
T& Foo::operator() (char c)
{
return 0;
}
};
原始代码具有 (int x, int y) 的重载,另一个具有 (Vector2 pos) 的重载,但错误是相同的。
是否有解决方法,还是我必须忍受的 VS 错误?