以下代码在我检查过的所有编译器(clang,mingw,g++)中都可以正常编译,但在MSVC上无法编译。
任何见解都是宝贵的,我已经为此烦恼了一整天。 我的 MSVC 版本是 14.0,但我已经使用 19.00.23506 版本进行了在线测试,出现了相同的错误。 然而,在版本 19.11.25331.0 中并没有出现这个错误。 难道是编译器的 bug?
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 中并没有出现这个错误。 难道是编译器的 bug?
operator==
版本,我会感到困惑,因为它并没有测试相等性。 - piwi