Ist sichergestellt, dass der Template-Vorlagenparameter vom Benutzer bereitgestellte Deduktionsleitfäden aufruft?

8

Betrachten Sie ein Beispiel:

%Vor%

[clang] sowie [ gcc] scheinen beide vom Benutzer bereitgestellte Deduktionsanleitungen (# 2) zu verwenden, wenn sie den Vorlagenparameter des Vorlagenvorlagenparameters (# 1) herleiten. Ist es eine standardkonforme Funktion?

    
W.F. 06.10.2017, 16:43
quelle

1 Antwort

4

Ja, das ist standardkonform.

Laut [dcl.type.simple] / 2 :

  

Ein Typspezifizierer der Form typename opt verschachtelter Name-Specifier opt Vorlagenname ist ein Platzhalter für einen abgeleiteten Klassentyp ([dcl.type.class.educt]). Der Schablonenname muss eine Klassenvorlage benennen, die kein Klassenname ist.

Und [temp.param] / 3 :

  

Ein type-Parameter , dessen Bezeichner keiner Ellipse folgt, definiert seinen Bezeichner als typedef-name (falls ohne template deklariert) oder Vorlage -name (falls mit template deklariert) im Bereich der Template-Deklaration.

TT ist ein Typ-Parameter, der mit template deklariert wird, was ihn zu einem Schablonennamen und damit zu einem Platzhalter für einen abgeleiteten Klassentyp macht. Alle üblichen Regeln gelten gut.

    
Barry 06.10.2017, 17:13
quelle