Entspricht ein Templatetypname ... nicht dem TemplateTypenname eines Fehlers?

8

Beim Durchsuchen dieser Antwort entdeckte ich, dass eine Vorlage, die ein Parameterpaket enthält, von einer erwarteten Vorlage nicht akzeptiert wird Vorlage mit einer bestimmten Anzahl von Parametern.

Dies scheint mir ein Fehler zu sein, denn wenn ein Template eine beliebige Anzahl von Parametern annehmen kann, sollte es in der Lage sein, auf eine bestimmte Nummer zu mappen. Gibt es einen Sprachanwalt, der erklären könnte, warum das nicht erlaubt ist?

Hier ist ein einfaches Beispiel:

%Vor%

Ich würde es natürlich nicht in diesem exakten Szenario verwenden. Es würde verwendet werden, um eine Vorlage an eine andere Vorlage zu übergeben, die die übergebene Vorlage in irgendeiner Weise verwenden würde. In meiner Antwort, die ich verlinkt habe, habe ich einen Workaround angegeben, aber ich habe immer noch das Gefühl, dass dies ein Defekt ist.

    
Adrian 09.12.2017, 17:16
quelle

1 Antwort

12

Diese Einschränkung wurde durch P0522 gelockert , die neue Regeln einführt, um zu handhaben, wie Template-Template-Argumente mit Template-Template-Parametern übereinstimmen. Als Ergebnis aus dem Papier:

%Vor%

Ihr Beispiel kann nicht in C ++ 14 kompiliert werden, wird aber in C ++ 17 kompiliert.

    
Barry 09.12.2017, 17:52
quelle

Tags und Links