------- Comment #11 from nathan at gcc dot gnu dot org 2006-01-15 14:04 ------- What's happening is that we parse I<T>::B as a type specifier and then squirrel away a preparsed template type specifier, but because I<T>::B is a non-dependent type, the preparsed specifier becomes simply ::B, losing the base path information.
I think the bug is that the preparsed template id is saved regardless of the check_dependency, is_declaration and type_p flags. I spent some time looking at this and got confused. I really must allocate some time to look again. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22136