#include <iostream>
class A
{
public:
A( int a ) : a(a) { }
A operator&&( const A& a )
{
std::cout << "operator &&" << std::endl;
return *this;
}
operator bool()
{
std::cout << "operator bool : " << a << std::endl;
return false;
}
A& operator()()
{
std::cout << "operator () : " << a << std::endl;
return *this;
}
private:
const int a;
};
int main() {
A a1(1), a2(2), a3(3);
if( a1() && a2() && a3() )
{
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQQp7CnB1YmxpYzoKICAgIEEoIGludCBhICkgOiBhKGEpIHsgfQogICAgQSBvcGVyYXRvciYmKCBjb25zdCBBJiBhICkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIm9wZXJhdG9yICYmIiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfSAKICAgIAogICAgb3BlcmF0b3IgYm9vbCgpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJvcGVyYXRvciBib29sIDogIiA8PCBhIDw8IHN0ZDo6ZW5kbDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIEEmIG9wZXJhdG9yKCkoKSAKICAgIHsgCiAgICAgICAgc3RkOjpjb3V0IDw8ICJvcGVyYXRvciAoKSA6ICIgPDwgYSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgcmV0dXJuICp0aGlzOyAKICAgIH0KcHJpdmF0ZToKICAgIGNvbnN0IGludCBhOwp9OwoKaW50IG1haW4oKSB7CiAgICAKICAgIEEgYTEoMSksIGEyKDIpLCBhMygzKTsKICAgIAogICAgaWYoIGExKCkgJiYgYTIoKSAmJiBhMygpICkKICAgIHsKICAgICAgICAKICAgIH0KCQoJcmV0dXJuIDA7Cn0=