Does the compiler generated assignment operator guard against self assignment?
class T { int x; public: T(int X = 0): x(X) {} }; int main() { T a(
class T { int x; public: T(int X = 0): x(X) {} // prevent copying private: T& operator=(const T&); };