Thanks for the pointers. Always an interesting read.
The point that I should have made more clearly, is for the ability to
instruct the compiler to elide the copy constructor by using, say, a new keyword, as described, above. The current problem, is that the compiler may or may not do this, and side effects will or will not occur, depending on what the compiler chooses i.e. an inconsistent formulation of the program.
If the compiler is not able to do the elision, then a warning/error would be emitted, bringing this to the attention of the programmer. A work-around, to avoid this ambiguity, is, I believe, to quality the declaration of A with "volatile"
The problem, here, of course, is that the optimization does not occur.