Wurden Checked-Guard-Parameterpakete im Falle von Spezialisierungen zu schlecht geformten Programmen führen?

9

Dies ist ein Follow-up zu this Frage.

Betrachten Sie den folgenden Code:

%Vor%

Es kompiliert, aber laut [temp.res] / 8 ist es schlecht geformt , keine Diagnose erforderlich wegen:

  

Jede gültige Spezialisierung einer variadischen Vorlage erfordert ein leeres Vorlagenparameterpaket

Betrachten Sie nun dieses etwas andere Beispiel:

%Vor%

In diesem Fall existiert eine gültige vollständige explizite Spezialisierung, für die das Parameterpack nicht leer ist.
Reicht das aus, um zu sagen, dass der Code nicht mehr schlecht geformt ist?

Hinweis: Ich suche nicht nach alternativen Möglichkeiten wie das std::enable_if_t in den Rückgabetyp oder ähnliches zu setzen.

    
skypjack 28.11.2016, 10:30
quelle

1 Antwort

4

[temp.res] / 8 spricht von Template-Deklaration s, nicht von der Entity. Das heißt, es spricht über primäre Vorlagen und partielle Spezialisierungen einzeln ; Diese "Vorlagen" müssen jeder eine gültige Spezialisierung haben, die den Regeln unterliegt. Andernfalls müsste der erste Punkt in diesem Absatz in derselben Weise interpretiert werden, was definitiv nicht seine beabsichtigte Bedeutung ergibt.

%Vor%     
Columbo 28.11.2016, 15:15
quelle