Dies ist eigentlich eine known bug in Clang.
Der Code ist gültig.
N4140 [dcl.mptr]/1:
In einer Erklärung T D
wo D
das Formular
verschachtelten-name-specifier*
Attribut-specifier-Seq opt cv hat -qualifier-seq optD1
und der nested-name-Spezifizierer eine Klasse bezeichnet, und den Typ des Bezeichners in der Erklärung T D1
ist „abgeleitete-declarator-Typ-Liste T
“, dann ist der Typ des Bezeichners der D
ist „abgeleiteten -declarator-type-list cv-qualifier-seq Zeiger auf Mitglied der Klasse nested-name-specifier vom Typ T
". Der optionale Attribut-Spezifizierer-seq (7.6.1) gehört zu der Zeiger-zu-Mitglied.
In dieser Definition, die wir in verschachtelten-name-specifier interessiert sind, und es wird definiert, bei [expr.prim.general]/8 als (Hervorhebung von mir):
verschachtelten-name -specifier:
::
Typname ::
Namespace-Namen ::
decltype-specifier ::
verschachtelten-name-specifier Bezeichner ::
verschachtelten-name-specifier template
opt einfach-template-ID ::