どのように使用すれば良いでしょうか?
ttps://pgon.dev/blog/posts/building-map-filter-and-reduce-in-c-with-templates-and-iterators/
#include <vector>
template <typename IteratorType>
using ItemType = typename std::iterator_traits<typename IteratorType::iterator>::value_type;
template <typename IteratorType>
IteratorType Filter(IteratorType &items, std::function<bool(ItemType<IteratorType> &item)> filterCb)
{
IteratorType filteredIterator;
ForEach<IteratorType>(items, [&filteredIterator, &filterCb](auto &item) { if (filterCb(item)) filteredIterator.push_back(item); });
return filteredIterator;
}
class HogeTest {
HogeTest(int id){this->id = id}
~HogeTest(){}
int id;
};
void main() {
std::vector<HogeTest> vec;
vec.push_back(HogeTest(3));
vec.push_back(HogeTest(4));
vec.push_back(HogeTest(5));
vec.push_back(HogeTest(6));
// エラー。記述が正しくないです
Filter(&vec, [](HogeTest &item){return item.hoge > 0;});
}