http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> 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 and have a few other patches I need to chase for approval, so if you have time to work on this please be my guest, thanks!