template< typename T, typename ALLOC > inline ostream &operator<<( ostream &os, const vector< T, ALLOC > &v ) {
return v.empty( ) ? os : details::writeSequence< T >( os, &( *v.cbegin( ) ), &( *v.cend( ) ) );
}
template< typename T, typename COMPARE, typename ALLOC > inline ostream &operator<<( ostream &os, const set< T, COMPARE, ALLOC > &s ) {
return s.empty( ) ? os : details::writeSequence< T >( os, &( *s.cbegin( ) ), &( *s.cend( ) ) );
}