Alex Vinokur <alex.vino...@gmail.com> writes:
> It is not my code. It is code of very large project.
> Actually I think we can't change 'return by value' to something else.
> It seems we need to remove 'noncopyable' for g++.
>
> What does standard of C++03 write of this?

My memory is the same as SG:  even if the copy is elided by
optimization, the class is still required to be "potentially copyable"
(in C++98/C++03).

I think many compilers were traditionally pretty lax, so source code
like this could slip through if the copy was not needed, but it was
always invalid.

Note that Clang (which, like recent versions of g++, does a pretty
good job of following the standard closely) gives the same error as
g++:

   $ clang++ -o uc -O2 uc.cc
   uc.cc:15:7: error: base class 'noncopyable' has private copy constructor
   class Foo : private noncopyable
         ^
   uc.cc:10:7: note: declared private here
         noncopyable( const noncopyable& );
         ^
   uc.cc:24:9: note: implicit default copy constructor for 'Foo' first
         required here
           return Foo();
                  ^
   1 error generated.

-miles

-- 
The secret to creativity is knowing how to hide your sources.
  --Albert Einstein
_______________________________________________
help-gplusplus mailing list
help-gplusplus@gnu.org
https://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to