Ich habe zwei (oder mehr) Vorlagen, die jeweils eine bestimmte Gruppe von Klassen anpassen können, die durch ein Konzept identifiziert werden. Damit die beiden Vorlagen denselben Namen haben, müssen sie Spezialisierungen sein.
%Vor%Dies funktioniert, wenn eine der Spezialisierungen übereinstimmt. Wenn keine Übereinstimmung mit der Basisvorlage besteht, wird der Assertionsfehler angezeigt. Der Mechanismus funktioniert. Ich liebe Konzepte!
Aber die Fehlermeldung, die ich bekomme (GCC 7.2.0), weist auf die Behauptung hin. Kann ich irgendwie veranlassen, dass die Basisvorlage nicht ausgewählt wird, so würde ich eine Fehlermeldung erhalten, die besagt, dass keine Vorlage mit der Argumentklasse übereinstimmt?
Versuchen Sie, std :: enable_if zu verwenden, um die Basisvorlage aus der Überladungsauflösung zu entfernen. Etwas wie das:
%Vor%Tags und Links c++ templates c++-concepts