https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66350

--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Also, "using typename Base<T>::name;" would usually re-declare a type name in
the derived class' scope, but that's not what's happening here. It's
introducing inheriting constructors, not a type.

7.3.3 [namespace.udecl]/19 says:

  If a using-declaration uses the keyword typename and specifies a dependent
  name (14.6.2), the name introduced by the using-declaration is treated as a
  typedef-name (7.1.3).

and we definitely don't want it to be treated as a typedef-name, so "typename"
must not be used for an inheriting constructor.

Reply via email to