[Bug c++/55098] c++11: move constructor doesn't run at all (but with a hammer)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55098 --- Comment #1 from Lisp2D lisp2d at lisp2d dot net 2012-10-27 15:01:42 UTC --- May be it is optimisation, but without instruction and with side effects.
[Bug c++/55098] c++11: move constructor doesn't run at all (but with a hammer)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55098 Jonathan Wakely redi at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID --- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org 2012-10-27 15:04:48 UTC --- See http://en.wikipedia.org/wiki/Return_value_optimization Use -fno-elide-constructors to disable constructor elision
[Bug c++/55098] c++11: move constructor doesn't run at all (but with a hammer)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55098 Lisp2D lisp2d at lisp2d dot net changed: What|Removed |Added Status|RESOLVED|UNCONFIRMED Resolution|INVALID | --- Comment #3 from Lisp2D lisp2d at lisp2d dot net 2012-10-27 15:22:18 UTC --- My opinion is to enable elide-constructors in -sdt=c++11. Programers in this standard use own move-constructors with own-side effects.
[Bug c++/55098] c++11: move constructor doesn't run at all (but with a hammer)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55098 --- Comment #4 from Lisp2D lisp2d at lisp2d dot net 2012-10-27 15:24:06 UTC --- (In reply to comment #3) My opinion is to enable elide-constructors in -sdt=c++11. Programers in this standard use own move-constructors with own-side effects. My opinion is to disable elide-constructors in -sdt=c++11. Programers in this standard use own move-constructors with own-side effects.
[Bug c++/55098] c++11: move constructor doesn't run at all (but with a hammer)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55098 --- Comment #5 from Lisp2D lisp2d at lisp2d dot net 2012-10-27 15:46:39 UTC --- OK. Right path is: DON'T return anything.
[Bug c++/55098] c++11: move constructor doesn't run at all (but with a hammer)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55098 Jonathan Wakely redi at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID --- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org 2012-10-27 15:54:21 UTC --- (In reply to comment #4) My opinion is to disable elide-constructors in -sdt=c++11. This is nothing new in C++11, the same applies to copy constructors in C++98, and changing it would make a huge number of programs run slower. Copy elision is a Good Thing. This has been discussed several times in several places and isn't going to change. Programers in this standard use own move-constructors with own-side effects. No they don't, not if they understand C++. Don't rely on side effects in copy/move constructors.
[Bug c++/55098] c++11: move constructor doesn't run at all (but with a hammer)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55098 --- Comment #7 from Jonathan Wakely redi at gcc dot gnu.org 2012-10-27 16:03:17 UTC --- (In reply to comment #2) See http://en.wikipedia.org/wiki/Return_value_optimization Use -fno-elide-constructors to disable constructor elision And also http://en.wikipedia.org/wiki/Copy_elision which says It is generally not recommended to disable this important optimization.