以下代码可以编译我检查过的所有编译器(clang,mingw,g ++),而不是MSVC。为什么==运算符在MSVC中含糊不清的运算符重载
enum class Foo{BAR};
bool operator==(Foo a, Foo b)
{
return (int)a & (int)b;
}
int main(int argc, char *argv[])
{
Foo::BAR==Foo::BAR;
return 0;
}
MSVC失败,出现以下错误:
>main.cpp(10): error C2593: 'operator ==' is ambiguous
>main.cpp(3): note: could be 'bool operator ==(Foo,Foo)'
>main.cpp(10): note: while trying to match the argument list '(Foo, Foo)'
任何有识之士将是巨大的,我整天都在抓我的头这一点。
我的MSVC版本是14.0,但是我使用版本19.00.23506在线测试了它,并且出现了相同的错误。
但是,该错误与版本19.11.25331.0不兼容。 编译错误呢?
可能是因为有内置的。 – StoryTeller
作为一个方面说明,如果我必须使用您的'operator =='版本,我会感到困惑,因为它不会测试相等性。 – piwi
@piwi - 这只是重现模糊错误的最小代码, – hippiemancam