【发布时间】:2010-11-11 14:35:33
【问题描述】:
我有这样的事情:
#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<<,因为 namespace N 没有与 MyPair 关联(很遗憾)。 Afaik 可能不会添加到命名空间 std,所以如果我选择在 std 中定义 operator <<,那将是非法的。那么......在这种情况下该怎么办?我不想明确限定operator <<,也不想写using namespace N。所以,问题是:
- 如何重构代码?
- 为什么 ADL 不关联 typedef 的命名空间?严重的原因?这会很好,例如在这种情况下。谢谢
【问题讨论】:
标签: c++ typedef argument-dependent-lookup