У меня есть что-то вроде этого:
#include <iostream>
namespace N
{
typedef std::pair<int, double> MyPair;
std::ostream& operator << (std::ostream& o, MyPair const & mypair)
{
///
}
}
int main()
{
N::MyPair pr;
std::cout << pr;
}
Это, естественно, не работает, потому что ADL не найдет operator < <
, потому что пространство имен N
не связано с MyPair
(к сожалению). Afaik нельзя добавлять в пространство имен std, поэтому, если я решил определить оператор <<
в std, что было бы незаконно. Итак ... что делать в таких ситуациях? Я не хочу явно указывать operator <<
и не хочу писать с использованием пространства имен N
. Итак, вопросы: