namespace std {
namespace tr1 {
template<class Ty, std::size_t N>
class array;
// TEMPLATE FUNCTIONS
template<class Ty, std::size_t N>
bool operator==(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, std::size_t N>
bool operator!=(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, std::size_t N>
bool operator<(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, std::size_t N>
bool operator<=(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, std::size_t N>
bool operator>(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, std::size_t N>
bool operator>=(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, std::size_t N>
void swap(
array<Ty, N>& left,
array<Ty, N>& right);
// tuple-LIKE INTERFACE
template<int Idx, class T, std::size_t N>
RI get(array<T, N>&);
template<int Idx, class T, std::size_t N>
const RI get(const array<T, N>&);
template<int Idx, class T, std::size_t N>
class tuple_element<Idx, array<T, N> >;
template<class T, std::size_t N>
class tuple_size<array<T, N> >;
} // namespace tr1
} // namespace std