イテレータと基準のペアを取るアルゴリズムを宣言したいと思います。次に、基準を満たす反復子の範囲から項目のベクトルを返します。
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*&'