Why X(X) doesn't work
Recall that passing an argument to a function copies the argument
Therefore, calling X(X) must copy the object being copied before it can copy it
- To do that, it would have to use the copy constructor, but calling the copy constructor must first copy the argument
- To do that, it would have to use the copy constructor, but ...