Right, page 211 of the C++ standard (2003) explains when copy-ctor and
dtor are allowed to be optimized away. But the two circumstances are
both like this:
A is constructed; A is copy-constructed to B; A is destructed
Here A is a temporary object in some sense, and the standard allows
for directly constructing B.
However, Neal expected the compiler to optimize "A is constructed; A
is destructed" away. I find nowhere in the standard that allows this.


ps, Did you forget to put [EMAIL PROTECTED] in the cc list?

On 9/26/07, Michael Veksler <[EMAIL PROTECTED]> wrote:
> But, according to the C++ standard, the compiler is allowed to optimize
> copy construction away. GCC does that in many occasions . For example try:
> |
> #include <iostream>
> using namespace std;
> struct T   {
>     T()         { }
>     T(const T&) { cout << "!!! copy ctor !!! \n"; }
> };
> T f()      { T t; return t;}
> int main()
> {
>   cout << "No copy\n";
>   T no_copy= f();
>
>   cout << "Expecting copy\n";
>   T copy= no_copy;
> }
> |

Reply via email to