https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81347
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- I would guess that the instantiation of A::tree injects the type map into the enclosing namespace, and then the using-declaration finds two declarations and thinks it's an error. bug.cc:17:10: error: ‘map’ is already declared in this scope using A::map; ^~~