Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么ostream_迭代器不能按预期工作?_C++_Stream - Fatal编程技术网

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;
};