#include <iostream>
using namespace std;
struct A
{
explicit operator bool() const
{
return true;
}
operator int()
{
return 0;
}
};
int main()
{
if (A())
{
cout << "true" << endl;
}
else
{
cout << "false" << endl;
}
}
私の期待は、A()
コンテキストに応じbool
て my を使用するように変換されるoperator bool()
ため、 print true
.
ただし、出力はであり、代わりに が呼び出されたfalse
ことを示しています。operator int()
explicit operator bool
期待どおりに呼び出されないのはなぜですか?