我想知道,如果有一种方法可以在编译时检查一些迭代器类型的T是否是const_iterator,或者不是。迭代器和常量迭代器之间的迭代器定义的类型(value_type,pointer,...)有区别吗?如何检测类型是否是迭代器或const_iterator
我想实现这样的事情:
的作品至少在GCCtypedef std::vector<int> T;
is_const_iterator<T::iterator>::value // is false
is_const_iterator<T::const_iterator>::value // is true
最近是否只是我或者社区上涨缺乏? :(+1你说它的工作,它看起来不错 – 2011-03-24 18:36:04
我选择了你的答案,因为你的解决方案使用std :: iterator_traits <>类 – 2011-03-24 19:28:50
当'std :: iterator_traits :: pointer'是一个代理类的类型,但是如果有解决方案的话,就必须使用一些非常令人讨厌的SFINAE – aschepler 2011-03-24 20:18:12