https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62056
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- tr1::tuple doesn't support perfect-forwarding or move semantics tr1::tuple doesn't support uses-allocator construction tr1::tuple doesn't support 'final' classes tr1::tuple doesn't have correct exception specifications tr1::tuple doesn't prevent implicit conversions that would use explicit constructors tr1::tuple doesn't support tuple concatenation If you can add all those features to the <tr1/tuple> implementation so that it meets the C++11 requirements and it still compiles faster then I'd be interested in your analysis of the remaining differences. Otherwise I'm going to assume the difference is because the <tuple> header contains more than twice as many lines of code and several additional features.