C++ 为什么ostream_迭代器不能按预期工作?
无需多说以下代码:C++ 为什么ostream_迭代器不能按预期工作?,c++,stream,C++,Stream,无需多说以下代码: #include <utility> #include <vector> #include <iostream> #include <iterator> using namespace std; typedef pair<char, char> PAIR; ostream& operator <<(ostream& os, const PAIR& r) { retur
#include <utility>
#include <vector>
#include <iostream>
#include <iterator>
using namespace std;
typedef pair<char, char> PAIR;
ostream& operator <<(ostream& os, const PAIR& r)
{
return os << r.first;
}
int main()
{
vector<PAIR> coll;
cout << coll[0]; // OK.
// The following line will cause a compilation error! Why???
copy(coll.begin(), coll.end(), ostream_iterator<PAIR>(cout));
}
#包括
#包括
#包括
#包括
使用名称空间std;
typedef对;
ostream&operator这是一个常见的问题:总之,您的操作符问题是名称查找找不到您的operator@icecrime这是C++标准的缺陷吗?或者有什么理由吗?@xmllmx:这只是名称空间的工作方式,我不认为这是一个错误defect@xmllmx:由于依赖于参数的查找发生在模板实例化点(在有问题的情况下是在命名空间std
)@icecrime,非常感谢您的快速回答和耐心的解释。
struct PAIR : std::pair
{
using std::pair::pair;
};