>>96
少なくともひとつの、「自分で定義した」型に依存させる
例えば、
class My_pair : private std::pair<int, int>{/* ... */};
std::ostream &operator<<(std::ostream &, const My_pair &);

std名前空間の引数しか取らない演算子はstdの実装者のみ定義して良いような気がする。