我想从传递给函数的迭代器中确定 std 容器类型(至少是关联或线性(。
我已经搜索了适当的迭代器特征和类型特征,但没有成功。
template <typename RangeIter, typename InputIter>
inline bool filter(RangeIter in_data, InputIter result)
{
...
/* determine the container types here - but how?!? */
std::copy_if(in_data.first, in_data.second, result, /* some predicate code here*/);
...
}
No.(好吧,对于StackOverflow来说可能有点太短了(。
无法确定迭代器引用的"容器",因为它们根本不需要引用容器。
例:
int foo, bar;
std::copy(&foo, &foo+1, &bar);
在此示例中,传递给std::copy
的迭代器都没有引用"容器"。