相关疑难解决方法(0)

如何将迭代器限制为前向迭代器?

我有一个需要多次枚举迭代器的函数,但根据MSDN,"一旦你增加了输入迭代器的任何副本,其他副本都不能安全地进行比较,解除引用或增加."

因此,为了使事情变得更容易,我不想为复制数据和枚举副本的非正向迭代器创建单独的实现,而是希望将我的方法限制为只接收前向迭代器,并静态拒绝输入迭代器.

现在我有类似的东西:

template<typename It, typename TCallback /*signature: bool(value_type)*/>
bool EnumerateTwice(const It &begin, const It &end, TCallback callback)
{
    for (It it = begin; it != end; ++it)
        if (!callback(*it))
            return false;
    for (It it = begin; it != end; ++it)
        if (!callback(*it))
            return false;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

但没有什么限制It成为一个前向迭代器.

如何将限制放在模板化函数上?(C++ 03)

c++ templates iterator

6
推荐指数
1
解决办法
1042
查看次数

标签 统计

c++ ×1

iterator ×1

templates ×1