http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51183
--- Comment #9 from Chris Jefferson <chris at bubblescope dot net> 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 more efficent for types without a move constructor. However, there really isn't very much choice in how you implement this. Jonathan, if you are already off writing tests and ready to commit, I'm happy to let you finish, else I could write some tests and submit a patch.