C++ C++;在标准库中有比较迭代器类别的工具

C++ C++;在标准库中有比较迭代器类别的工具,c++,template-meta-programming,C++,Template Meta Programming,我想断言提供给我的函数的容器具有双向或更强的迭代器。 我知道如何做到这一点的唯一方法是比较它不是较弱的迭代器之一 static_assert(! std::is_same<typename std::iterator_traits<typename C1::iterator>::iterator_category, std::input_iterator_tag>::value,""); static_assert(!std::is_same<typ

我想断言提供给我的函数的容器具有双向或更强的迭代器。 我知道如何做到这一点的唯一方法是比较它不是较弱的迭代器之一

    static_assert(! std::is_same<typename std::iterator_traits<typename C1::iterator>::iterator_category, std::input_iterator_tag>::value,"");
    static_assert(!std::is_same<typename std::iterator_traits<typename C1::iterator>::iterator_category, std::forward_iterator_tag>::value, "");
//TODO:add check it is not output iter....
static_断言(!std::is_same::value,”);
静态断言(!std::is_same::value,“”);
//TODO:添加检查它是否未输出iter。。。。

有没有办法说迭代器的类别是bidi或更强

标记彼此继承(因此随机从双向继承,从正向继承,从输入继承)

因此,您可以执行以下操作(当然仍然相当长)


static_断言(std::is_base_of::value,”)

迭代器类别的五种可能类型是
输入迭代器标签
输出迭代器标签
前向迭代器标签
双向迭代器标签
,以及
随机访问迭代器标签

既然你已经用了其中两个,我想你可以用其他的