Приведенный ниже код печатает "оператор bool" при использовании в инструкции if и "operator void *", когда ему нужен вызов bool для вызова функции.
Почему он не использует operator bool
для вызова функции? И как его использовать в обоих случаях?
#include <iostream>
class A
{
public:
explicit operator bool() const
{
std::cout << "operator bool" << std::endl;
return true;
}
operator void*() const
{
std::cout << "operator void*" << std::endl;
return 0;
}
};
void f(bool valid)
{
std::cout << "f called " << valid << std::endl;
}
int main(int argc, char *argv[])
{
A a;
if(a)
std::cout << "if a" << std::endl;
f(a);
return 0;
}