#include <iostream>
#include <string>
using namespace std;
class Cls {
public:
Cls(bool value, const char *msg) :
m_value(value),
m_name(msg)
{
cout << "Cls::Cls(" << m_name << ")" << endl;
}
Cls& operator &&(const Cls &other) {
cout << "Cls(" << m_name << ")::operator &&(" << other.m_name << ")" << endl;
return *this;
}
operator bool() const {
cout << "Cls(" << m_name << ")::operator bool()" << endl;
return m_value;
}
private:
bool m_value;
string m_name;
};
class T : public Cls {
public:
T(const char *msg) : Cls(true, msg) {}
};
class F : public Cls {
public:
F(const char *msg) : Cls(false, msg) {}
};
int main() {
cout << "Mission:" << endl;
if (F("a") && T("b") && T("c")) {
cout << "... completed" << endl;
} else {
cout << "... failed" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ2xzIHsKcHVibGljOgogICAgQ2xzKGJvb2wgdmFsdWUsIGNvbnN0IGNoYXIgKm1zZykgOgogICAgICAgIG1fdmFsdWUodmFsdWUpLAogICAgICAgIG1fbmFtZShtc2cpCiAgICB7CiAgICAgICAgY291dCA8PCAiQ2xzOjpDbHMoIiA8PCBtX25hbWUgPDwgIikiIDw8IGVuZGw7CiAgICB9CgogICAgQ2xzJiBvcGVyYXRvciAmJihjb25zdCBDbHMgJm90aGVyKSB7CiAgICAgICAgY291dCA8PCAiQ2xzKCIgPDwgbV9uYW1lIDw8ICIpOjpvcGVyYXRvciAmJigiIDw8IG90aGVyLm1fbmFtZSA8PCAiKSIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsKICAgICAgICBjb3V0IDw8ICJDbHMoIiA8PCBtX25hbWUgPDwgIik6Om9wZXJhdG9yIGJvb2woKSIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgIH0KCnByaXZhdGU6CiAgICBib29sIG1fdmFsdWU7CiAgICBzdHJpbmcgbV9uYW1lOwp9OwoKY2xhc3MgVCA6IHB1YmxpYyBDbHMgewpwdWJsaWM6CiAgICBUKGNvbnN0IGNoYXIgKm1zZykgOiBDbHModHJ1ZSwgbXNnKSB7fQp9OwoKY2xhc3MgRiA6IHB1YmxpYyBDbHMgewpwdWJsaWM6CiAgICBGKGNvbnN0IGNoYXIgKm1zZykgOiBDbHMoZmFsc2UsIG1zZykge30KfTsKCmludCBtYWluKCkgewogICAgY291dCA8PCAiTWlzc2lvbjoiIDw8IGVuZGw7CiAgICBpZiAoRigiYSIpICYmIFQoImIiKSAmJiBUKCJjIikpIHsKICAgICAgICBjb3V0IDw8ICIuLi4gY29tcGxldGVkIiA8PCBlbmRsOwogICAgfSBlbHNlIHsKICAgICAgICBjb3V0IDw8ICIuLi4gZmFpbGVkIiA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==