#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;
}
bool operator &&(const Cls &other) const {
cout << "Cls(" << m_name << ")::operator &&(" << other.m_name << ")" << endl;
return true;
}
operator bool() const {
cout << "Cls(" << m_name << ")::operator bool()" << endl;
return true;
}
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 (T("a") && T("b") && T("c")) {
cout << "... completed" << endl;
} else {
cout << "... failed" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ2xzIHsKcHVibGljOgogICAgQ2xzKGJvb2wgdmFsdWUsIGNvbnN0IGNoYXIgKm1zZykgOgogICAgICAgIG1fdmFsdWUodmFsdWUpLAogICAgICAgIG1fbmFtZShtc2cpCiAgICB7CiAgICAgICAgY291dCA8PCAiQ2xzOjpDbHMoIiA8PCBtX25hbWUgPDwgIikiIDw8IGVuZGw7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvciAmJihjb25zdCBDbHMgJm90aGVyKSBjb25zdCB7CiAgICAgICAgY291dCA8PCAiQ2xzKCIgPDwgbV9uYW1lIDw8ICIpOjpvcGVyYXRvciAmJigiIDw8IG90aGVyLm1fbmFtZSA8PCAiKSIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBvcGVyYXRvciBib29sKCkgY29uc3QgewogICAgICAgIGNvdXQgPDwgIkNscygiIDw8IG1fbmFtZSA8PCAiKTo6b3BlcmF0b3IgYm9vbCgpIiA8PCBlbmRsOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKcHJpdmF0ZToKICAgIGJvb2wgbV92YWx1ZTsKICAgIHN0cmluZyBtX25hbWU7Cn07CgpjbGFzcyBUIDogcHVibGljIENscyB7CnB1YmxpYzoKICAgIFQoY29uc3QgY2hhciAqbXNnKSA6IENscyh0cnVlLCBtc2cpIHt9Cn07CgpjbGFzcyBGIDogcHVibGljIENscyB7CnB1YmxpYzoKICAgIEYoY29uc3QgY2hhciAqbXNnKSA6IENscyhmYWxzZSwgbXNnKSB7fQp9OwoKaW50IG1haW4oKSB7CiAgICBjb3V0IDw8ICJNaXNzaW9uOiIgPDwgZW5kbDsKICAgIGlmIChUKCJhIikgJiYgVCgiYiIpICYmIFQoImMiKSkgewogICAgICAgIGNvdXQgPDwgIi4uLiBjb21wbGV0ZWQiIDw8IGVuZGw7CiAgICB9IGVsc2UgewogICAgICAgIGNvdXQgPDwgIi4uLiBmYWlsZWQiIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K