[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 Paolo Carlini changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #20 from paolo at gcc dot gnu.org 2011-12-06 15:13:10 UTC --- Author: paolo Date: Tue Dec 6 15:13:04 2011 New Revision: 182054 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182054 Log: 2011-12-06 Jonathan Wakely C

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #19 from Paolo Carlini 2011-12-06 14:53:05 UTC --- Nope, doesn't. I'm going to test and commit a version with the constructor private. Thanks to both of you! By the way, it would be nice at some point to actually analyze the assembly

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #18 from Chris Jefferson 2011-12-06 14:41:19 UTC --- 2011-12-06 Chris Jefferson PR libstdc++/51183 * include/std/tuple (pair::pair): Add two constructors which use delegating constructors (pair::__cons, pair::__do_c

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #17 from Jonathan Wakely 2011-12-06 14:40:50 UTC --- Does the new constructor need to be public?

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #16 from Chris Jefferson 2011-12-06 14:25:24 UTC --- Created attachment 26006 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26006 Piecewise patch Patch to make piecewise_construct work properly on std::pair.

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #15 from Paolo Carlini 2011-12-06 10:31:30 UTC --- Created attachment 26005 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26005 Tested patch

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #14 from Paolo Carlini 2011-12-06 10:30:42 UTC --- I'm attaching what I already tested and was going to commit. If you like, please work on top of it and produce a combined new patch. Like, if you think another testcase is necessary o

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #13 from Chris Jefferson 2011-12-06 10:13:56 UTC --- You can if you like, but if you haven't started yet, I plan on having a patch ready in about... 2 hours?

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 Paolo Carlini changed: What|Removed |Added Status|NEW |ASSIGNED

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-06 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 Paolo Carlini changed: What|Removed |Added CC|paolo.carlini at oracle dot | |com

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-05 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #11 from Jonathan Wakely 2011-12-05 16:27:07 UTC --- I was assuming that since the public piecewise constructor takes them by value the extra move would be elided ... that might not be true though. I haven't written any tests for it

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-05 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #9 from Chris Jefferson 2011-12-05 16:19:40 UTC --- The only difference in the version I wrote was that I passed the arguments into the explicit constructor as non-const references, rather than by value with std::move, which should be

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-05 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #10 from Chris Jefferson 2011-12-05 16:25:13 UTC --- Oh, and one other tiny detail, I've about given up trying to understand corner cases in the name look-up rules in C++, so I'd probably std:: qualify those 'get's, just to be on the

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-05 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #8 from Paolo Carlini 2011-12-05 16:12:35 UTC --- I suspected that. Thus, Jon, if you like, just test and commit! ;)

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-05 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #7 from Jonathan Wakely 2011-12-05 16:09:18 UTC --- (In reply to comment #6) > template

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-05 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #6 from Jonathan Wakely 2011-12-05 16:06:57 UTC --- Nice! it should be pretty simple: template pair(piecewise_construct_t, tuple<_Args1...> __first, tuple<_Args2...> __second) : pair(std::move(__fi

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-12-05 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 Paolo Carlini changed: What|Removed |Added CC||paolo.carlini at oracle dot

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-11-17 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #4 from Marc Glisse 2011-11-17 11:44:55 UTC --- (In reply to comment #1) > This was necessary because (I believe) it is impossible to implement the > piecewise_construct_t constructor without compiler support for forwarding > construc

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-11-17 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 Jonathan Wakely changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed|

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-11-17 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 --- Comment #2 from Jonathan Wakely 2011-11-17 09:30:41 UTC --- nope, they haven't

[Bug libstdc++/51183] pair piecewise_construct_t constructor copies

2011-11-17 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183 Chris Jefferson changed: What|Removed |Added CC||chris at bubblescope dot