http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48476
--- Comment #7 from Takaya Saito <gintensubaru at gmail dot com> 2011-04-06 15:32:00 UTC --- (In reply to comment #6) > Ok, thanks. Still, I believe we have other std::move which should be turned > into forward, in std::tuple. Those in std::tuple_cat itself also seem suspect, > I see you are touching only the helper. Well, I think I had replaced all std::move that should be turned into forward ; remaining std::move are moving _Inherited ( _Tuple_impl<_Idx + 1, _Tail...> ), tuple<Elements...> or rvalue reference to these classes, which are not lvalue reference type, so they are not to be replaced ( of course, it is not wrong to replace them with std::forward, since std::move(x) is equivalent to std::forward<T>(x) if T is remove_reference<decltype((x))>::type ).