[17.17] When I throw this object, how many times will it be copied?
Depends. Might be "zero."
Objects that are thrown must have a publicly accessible copy-constructor. The
compiler is allowed to generate code that copies the thrown object any number
of times, including zero. However even if the compiler never actually copies
the thrown object, it must make sure the exception class's copy constructor
exists and is accessible.