#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;
}
