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