我正在实现一个模板函数,它将参数迭代器指向的序列的前 n 个元素的值设置为调用生成器函数返回的值。
我有以下代码:
template <typename IteratorOut, typename SizeType, typename Generator> IteratorOut createSequence(IteratorOut out, SizeType n, Generator gen) {
std::vector<Generator> vec;
for (SizeType i = 1; i <= n; i++) {
vec.push_back(gen());
}
std::copy(vec.begin(), vec.end(), out);
return out;
}
我正在使用以下内容测试该功能:
int generate () {
return 5;
}
...
std::vector<int> vec_int;
createSequence(vec_int.begin(), 5, generate);
for (std::vector<int>::iterator iter = vec_int.begin(); iter != vec_int.end(); iter++) {
std::cout << *iter << std::endl;
}
我收到“错误:从 'int (*)()' 到 'int' 的无效转换”。你能看出我的模板函数有什么问题吗?