içinde belirsiz enum operatör aşırı Aşağıdaki kod MSVC dışındaki ı işaretlediğiniz tüm derleyiciler (çınlama, mingw, g ++) ince derler olduğunu.Neden == 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 aşağıdaki hata nedeniyle başarısız:
>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)'
Herhangi bir fikir çok iyi olurdu, bütün gün bu konuda kafamı çizilmeye oldum.
MSVC sürümüm 14.0, ancak 19.00.23506 numaralı sürümüyle çevrimiçi olarak test ettim ve aynı hata görüntüleniyor.
hata ancak sürümü 19.11.25331.0 ile apear etmez. Derleyici hata o zaman? numaralandırma için
Muhtemelen yerleşik olanı olduğu için. – StoryTeller
Bir yan not olarak, '== = sürümünüzü kullanmak zorunda kaldığımda, eşitliği sınamadığı için kafam karışırdı. – piwi
@piwi - sadece belirsiz bir hatayı yeniden üretmek için gereken minimum kod, – hippiemancam