C++任何具有特定值类型的迭代器?

Met*_*ind 2 c++ templates iterator

假设我有一个函数模板来遍历某个容器的任何迭代器:

template<class iter_type>
void f(iter_type start, iter_type finish)
{
   // loop from start to finish
}
Run Code Online (Sandbox Code Playgroud)

现在问题是我知道value_type那个容器(f()只有那个特别有意义value_type).有没有办法限制iter_type特定的value_type

我可以继承std::iterator,但f()它只是一小段代码,不值得专门的类.

son*_*yao 5

您可以value_type通过std :: iterator_traits获取迭代,然后在编译时检查它,例如

template<class iter_type>
void f(iter_type start, iter_type finish)
{
    static_assert(
      std::is_same<
        typename std::iterator_traits<iter_type>::value_type,
        specific_value_type>::value, 
      "The value_type must be specific_value_type.");

    // loop from start to finish
}
Run Code Online (Sandbox Code Playgroud)

生活