-namespace std {
- // Sticking this in std:: makes it possible for ostream_iterator to use it.
- template <class A, class B>
- ostream & operator<<(ostream & o, const pair<A,B> & d) {
- return o << "<" << d.first << "," << d.second << ">";
- }
-}
-
-template <class A>
-typename enable_if<is_const_iterable<A>::value && !is_same<A,string>::value, ostream>::type &
-operator<<(ostream & o, const A & a) {
- return o << "[" << implode(a, ", ") << "]";
-}
-