#include <iostream>
class Foo {
public:
explicit Foo(bool v);
bool operator &&( const Foo& other ) const;
private:
bool v;
};
Foo::Foo(bool v) : v(v) {
std::cout << "constructed with " << v << std::endl;
}
bool Foo::operator &&(const Foo& other) const {
std::cout << "called && " << std::endl;
return v && other.v;
}
int main() {
if (Foo(false) && Foo(true));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgRm9vIHsKcHVibGljOgoJZXhwbGljaXQgRm9vKGJvb2wgdik7CgkKCWJvb2wgb3BlcmF0b3IgJiYoIGNvbnN0IEZvbyYgb3RoZXIgKSBjb25zdDsKCQpwcml2YXRlOgoJYm9vbCB2Owp9OwoKRm9vOjpGb28oYm9vbCB2KSA6IHYodikgewoJc3RkOjpjb3V0IDw8ICJjb25zdHJ1Y3RlZCB3aXRoICIgPDwgdiA8PCBzdGQ6OmVuZGw7Cn0KCmJvb2wgRm9vOjpvcGVyYXRvciAmJihjb25zdCBGb28mIG90aGVyKSBjb25zdCB7CglzdGQ6OmNvdXQgPDwgImNhbGxlZCAmJiAiIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiB2ICYmIG90aGVyLnY7Cn0KCmludCBtYWluKCkgewoJaWYgKEZvbyhmYWxzZSkgJiYgRm9vKHRydWUpKTsKCQoJcmV0dXJuIDA7Cn0=