Synopsis

namespace std {
    namespace tr1 {

    // TEMPLATE CLASSES
 template<class... Types>
    class tuple;

 template<int Idx, class Ty>
     class tuple_element; // not defined
 template<int Idx, class... Types>
     class tuple_element<Idx, tuple<Types...>>;

template<class Ty>
     class tuple_size; // not defined
 template<class... Types>
     class tuple_size<tuple<Types...>>;

    // TEMPLATE Functions
 template<int Idx, class Types>
     typename tuple_element <Idx, tuple<Types...>>::type&
         get(tuple<Types...&> tpl);
 template<int Idx, class Types>
     typename tuple_element <Idx, tuple<Types...>>::type&
         get(const tuple<Types...&> tpl);

 template<class... Types>
     tuple<Types2...>
         make_tuple(Types...);
 template<class... Types>
     tuple<Types&...>
         Tie(Types&...);

    // TEMPLATE COMPARISON OPERATORS
 template<class... Types1, class... Types2>
    bool operator==(const tuple<Types1...>& tpl1,
    const tuple<Types2...>& tpl2;
 template<class... Types1, class... Types2>
    bool operator!=(const tuple<Types1...>& tpl1,
    const tuple<Types2...>& tpl2;
 template<class... Types1, class... Types2>
    bool operator<(const tuple<Types1...>& tpl1,
    const tuple<Types2...>& tpl2;
 template<class... Types1, class... Types2>
    bool operator<=(const tuple<Types1...>& tpl1,
    const tuple<Types2...>& tpl2;
 template<class... Types1, class... Types2>
    bool operator>(const tuple<Types1...>& tpl1,
    const tuple<Types2...>& tpl2;
 template<class... Types1, class... Types2>
    bool operator>=(const tuple<Types1...>& tpl1,
    const tuple<Types2...>& tpl2;

    //CONST OBJECTS
const T1 ignore;

    }  // namespace tr1
}  // namespace std