我想声明一个采用一对迭代器和一个标准的算法。然后它返回满足条件的迭代器范围内的项目向量。
template <typename TIterator, typename TCriterium>
std::vector< Type that I will get after dereferencing TIterator >
filter (TIterator begin, TIterator end, TCriterium passes);
我可以使用 decltype 或 auto 等 C++11 功能。我试过:
#include <vector>
template <typename TIterator, typename TCriterium>
auto filter (TIterator begin, TIterator end, TCriterium passes)
-> std::vector< decltype(*begin) >
{
}
int main()
{
std::vector<int*> vector;
filter(vector.begin(), vector.end(), 0);
return 0;
}
但这不起作用。我得到:
/usr/include/c++/4.7/ext/new_allocator.h:59:
error: forming pointer to reference type 'int*&'