#include using namespace std; class weird_int { public: int val; int operator+(int x){ return val + x; } int operator+(const weird_int &x){ return 42; } }; int operator+(int a, weird_int b){ return a + b.val; } ostream& operator<<(ostream& out, weird_int x){ return out << "wi: " << x.val; } int main(){ weird_int x; weird_int a; a.val = 5; x.val = 26; cout << x << endl; cout << x + 4 << endl; cout << x + a << endl; cout << 5 + x << endl; return 0; }