Mit der kommenden C ++ 17-Funktion von Nicht-Typ-Vorlage Argumente mit Auto , wird es möglich sein, std::function
so zu implementieren, dass man zB folgende Funktionen einsetzen kann:
in automatisch gesteuerte std::function
-Objekte:
Und so weiter.
Mit anderen Worten: std::function
Objekte sind auf die Funktionstypen beschränkt, die sie akzeptieren ?
(Derzeit erhalten wir bei GCC error: 'auto' parameter not permitted in this context
.)
Das sind keine nicht-type Template-Argumente, daher ist auto
dort in C ++ 17 nicht erlaubt.
Nicht typisierte Vorlagenargumente sind Argumente für Vorlagen, die Zeiger oder Ganzzahlen oder ähnliche, tatsächliche Werte sind, keine Typen.
Zum Beispiel
%Vor% Hier ist 7
ein nicht typisiertes Vorlagenargument vom Typ std::size_t
und Wert 7
.
Die nicht typisierte Vorlage auto
erlaubt etwas wie:
jetzt integral<7>
ist std::integral_constant<int, 7>
.
Andererseits ist Ihre Verwendung von auto
anstelle eines Typs , kein Nicht-Typ.
Es gibt eine Funktion, von der der Typ der Vorlage abgeleitet wird. Sie könnten also schreiben:
%Vor%, wenn sie std::function
erweitert haben, um eine Signatur von einem Funktionszeiger (oder Nicht-Template-Callable) ableiten zu können.
Beachten Sie jedoch, dass diese std::function
eine feste Signatur und keine Vorlage hätte. Das Feature erlaubt einfach Deduktion , nicht Vorlage dynamischen Versand.
Ich weiß nicht, ob std::function
auf diese Weise in C ++ 17 erweitert wurde, aber die Sprachfunktion wurde hinzugefügt.
Tags und Links c++ templates c++17 auto std-function