
Hello all,
I have a class that is templated on an iterator type. As it only works
with bidirectional and random access iterators, I thought I would impose
that as follows:
template<typename T> class A
{
A() { checkIterator(std::iterator_traits<T>::iterator_category()); };
template<typename Tag> void checkIterator( Tag );
void checkIterator( std::bidirectional_iterator_tag ) {};
void checkIterator( std::random_access_iterator_tag ) {};
void checkIterator( boost::random_access_traversal_tag ) {};
};
This works when T is a standard iterator but not when it's one of my
iterator_facade subclasses. For example:
class const_iterator : public iterator_facade