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