[Bug libstdc++/52745] GCC4.7 vector uses copy instead of move constructor

2012-03-27 Thread J.W.Rogers+gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52745 Jonathan Rogers changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|

[Bug libstdc++/52745] GCC4.7 vector uses copy instead of move constructor

2012-03-27 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52745 --- Comment #6 from Paolo Carlini 2012-03-27 23:44:44 UTC --- Essentially the leeway for the unsafe fallback in the case of Comment #4 is provided by 23.3.6.5/1: "If an exception is thrown by the move constructor of a non-CopyInsertable T, the ef

[Bug libstdc++/52745] GCC4.7 vector uses copy instead of move constructor

2012-03-27 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52745 --- Comment #5 from Paolo Carlini 2012-03-27 23:30:23 UTC --- That's known, it's a design choice: in that case you are essentially back to the unsafe 4.6 behavior. Look for 'move_if_noexcept'.

[Bug libstdc++/52745] GCC4.7 vector uses copy instead of move constructor

2012-03-27 Thread J.W.Rogers+gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52745 --- Comment #4 from Jonathan Rogers 2012-03-27 23:25:45 UTC --- (In reply to comment #3) > Otherwise, if the move constructor by chance throws, the push_back cannot have > no effects, as required by 23.2.1/10. Actually the requirement holds for a

[Bug libstdc++/52745] GCC4.7 vector uses copy instead of move constructor

2012-03-27 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52745 --- Comment #3 from Paolo Carlini 2012-03-27 23:21:59 UTC --- Otherwise, if the move constructor by chance throws, the push_back cannot have no effects, as required by 23.2.1/10. Actually the requirement holds for all the containers, but only std

[Bug libstdc++/52745] GCC4.7 vector uses copy instead of move constructor

2012-03-27 Thread J.W.Rogers+gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52745 --- Comment #2 from Jonathan Rogers 2012-03-27 23:13:29 UTC --- (In reply to comment #1) > But Stuff' move-constructor isn't known not to throw... Okay, so it is a new requirement for move constructors to be marked as nothrow in order for vector

[Bug libstdc++/52745] GCC4.7 vector uses copy instead of move constructor

2012-03-27 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52745 --- Comment #1 from Paolo Carlini 2012-03-27 23:06:17 UTC --- But Stuff' move-constructor isn't known not to throw...