是否可以确定传递的迭代器是否属于关联的 std 容器?



我想从传递给函数的迭代器中确定 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的迭代器都没有引用"容器"。

最新更新