#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期待どおりに呼び出されないのはなぜですか?