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()它只是一小段代码,不值得专门的类.
您可以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)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |