我正在开发一组函数,这些函数利用具有打包和顺序内存存储(用于内存副本)的容器。它们具有大多数 STD 函数样式的函数签名,输入/输出迭代器指向元素并表示范围。例如,一个函数可能如下所示:
template< typename InputIterator, typename OutputIterator >
OutputIterator fooBar( InputIterator& first, InputIterator& last,
OutputIterator& result );
我希望验证传递的迭代器是否合法,即打包且顺序。对于 STD 容器,这仅限于 std::vector 和 std::array。不幸的是,我不能依赖迭代器“类别”特征,因为随机访问特征并不意味着顺序存储。这方面的一个例子是 microsofts concurrent_vector 类,记录在这里并行容器
此外,我也不能接受来自向量和数组类的所有迭代器,例如我需要拒绝反向迭代器,并且 std::vector <bool
> 迭代器不适合,因为它使用了代理类。
我试图创建自己的特征类来区分和过滤具有我上面描述的约束的迭代器,但我遇到了模板语法问题。我正在寻找其他人关于他们如何解决这个问题的反馈。
谢谢