------- Comment #2 from igodard at pacbell dot net 2005-10-30 21:29 ------- I don't get it. The argument is A<int>::iterator, which surely depends on A<E>::iterator (with "E" taken as "int"). The problem also arises in the simpler case: #include <iostream>
template<typename E> class A { public: class iterator { E dummy; }; iterator iter; }; template< typename E> void sort( typename E::iterator& first, typename E::iterator& last ) { std::cout << "sort" << std::endl; } int main( int argc, char *argv[] ) { A<int> first, last; sort(first.iter,last.iter); return 0; } It looks to me that unification is not looking at the qualifier of a qualified type. This may be what the standard says (it's a mystery to me) but is sure surprising. Ivan -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24588