Здравствуйте, uzhas, Вы писали:
Ясно.
Masterkent уже об этом написал.
Safe-bool idiom != explicit operator bool.
Вариант 1.
class My
{
typedef int My::*SafeBoolType;
int f;
public:
operator SafeBoolType() { return &My::f; }
};
int _tmain(int argc, _TCHAR* argv[])
{
My a;
bool c = a; // OK
return 0;
}
Вариант 2
class My2
{
typedef void (My2::*SafeBoolType)();
void F() {}
public:
operator SafeBoolType() { return &My2::F; }
};
int _tmain(int argc, _TCHAR* argv[])
{
My2 a;
bool c = a; // OK
return 0;
}