举个例, 某函数只允许使用双向迭代器
一旦使用了其他类型的迭代器, 函数就使用错误的例子, 谁能举例,
[解决办法]
用 iterator_traits萃取迭代器类型即可
template<class T>void func( T arg ){ func( arg , iterator_traits<T>::iterator_category() );}template<class T>void func( T arg , bidirectional_iterator_tag ){}template<class T>void func( T arg , random_access_iterator_tag );//不实现,使用随机迭代器的话 链接 错误int main(){ list<int> x; func( (char*)0 ); func( x.begin() );}