Well, the standard says:
It is possible to add a contructor to make Y assignable to X (in which case the constructor would do the hard work).13.5.3 Assignment
An assignment operator shall be implemented by a non-static member function with exactly one parameter.
Code:struct Y {}; struct X { X() {} X(const Y&) {} }; int main() { X x; Y y; x = y; }