http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31247
--- Comment #13 from Marc Glisse <marc.glisse at normalesup dot org> 2011-10-28 10:18:43 UTC --- (In reply to comment #12) > (In reply to comment #10) > > An iterator is either a pointer or a class with the > > typedefs. > > Or a type for which iterator_traits has been specialized? Yes. Sadly, that's not portably detectable. The 2 categories above are those that can be tested. And having a private iterator_category completely breaks sfinae in C++03.