Template-Funktionszeiger als Template-Parameter

8

Ich bin gerade auf ein kleines Problem gestoßen, das mich beim Umgang mit Vorlagen nervte. Hier ist ein Beispiel:

%Vor%

Dieser Code funktioniert ( Ссылка wenn Sie es ausprobieren wollen), aber da ich einen Funktionszeiger als Template-Parameter gebe, sollte ich nicht brauchen _returnType, es ist genau dort in der Funktionssignatur, das Problem ist, egal wie sehr ich es versuche, ich kann keinen Weg finden, diesen zusätzlichen Template-Parameter loszuwerden.

Wie kann ich aliasGetter nehmen nur einen Template-Parameter (ein Zeiger auf den Getter zu Alias)? Wenn das nicht möglich ist, warum nicht?

    
Nyashes 28.02.2017, 15:55
quelle

1 Antwort

14

In C ++ 17 wird es dank template auto möglich:

%Vor%

Vor C ++ 17 ist das nicht möglich. Sie müssen den Typ des Nicht-Typ-Vorlagenparameters angeben - daran ist kein Weg vorbei. Sie können dafür auch keine Factory erstellen, da Sie einen Funktionszeiger nicht durch eine Funktionsschablone übergeben können und ihn als nicht typisiertes Vorlagenargument erhalten.

Die kürzeste Problemumgehung in C ++ 14 ist, seufzend, ein Makro zu verwenden:

%Vor%

Sie erhalten den Typ Ihres Funktionszeigers, ohne dass Sie ihn zweimal manuell eingeben müssen.

    
Barry 28.02.2017, 16:02
quelle

Tags und Links