我的下面的代码编译,但我不知道如何写,而不使用decltype。我在使用decltype的行下面的注释行中写入了失败的尝试。什么是back_inserter(容器)的类型
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
template<class Out>
class Fill{
public:
Fill(){}
void fill(Out x){
for(int i = 0; i != 10; i++)*x++ = i;
}
};
int main(){
vector<int> v;
Fill<decltype(back_inserter(v))> f; //works
//does not work
//Fill<vector<int>::iterator> g;
//does not work
//Fill<back_insert_iterator<vector<int>> h;
f.fill(back_inserter(v));
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
}
由于
苏雷什
即使按照您的建议将右尖括号关闭,我会收到编译错误:'error:template argument 1 is invalid'。我用'-std = C++ 0x'选项使用g ++ 4.4。这就是为什么我将正确的斜角支架放在一起的原因。我的要求是编写一个函数,它只接受输出迭代器并填充它,就像在STL'copy'算法中看到的那样。那么我哪里错了? – suresh