que tiene algo como esto:ADL con typedefs desde otro espacio de nombres
#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;
}
Naturalmente, esto no funciona, porque no encontrará ADL operator<<
porque namespace N
no está asociada con MyPair
(por desgracia). Afaik one no puede agregarse al espacio de nombres std, por lo que si elijo definir operator <<
en std sería algo ilegal. Entonces ... ¿qué hacer en tales situaciones? No quiero calificar explícitamente operator <<
, ni deseo escribir using namespace N
. Entonces, las preguntas son:
- Cómo refactorizar el código?
- ¿Por qué ADL no asociaría los espacios de nombres de typedefs? ¿Razones serias? Sería bueno, por ejemplo en este caso. Gracias
I era thinki ng al respecto, pero parece artificial para mí ... –
@Armen: ¿Qué parece artificial? –
@Roger: Creación de una nueva clase sólo por el bien –