Mit dem kommenden C++ 17 Merkmale non-type template arguments with auto, wird es möglich sein std::function
so zu implementieren, in der Lage sein, zum Beispiel zu setzen, wird die folgenden Funktionen:Werden C++ 17 Vorlagenargumente mit Auto-Feature eingeschränkte std :: function-Objekte zulassen?
bool f(int n, double d) {}
bool g(bool b, char c) {}
bool h(bool b) {}
in Auto-Templat std::function
Objekte:
std::function<bool(auto, auto)> faa = f; // ok
std::function<bool(int, auto)> fia = f; // ok
std::function<bool(double, auto)> fda = f; // error: function type mismatch
std::function<bool(auto, auto)> gaa = g; // ok
std::function<bool(auto, auto)> haa = h; // error: function type mismatch
std::function<bool(auto)> ha = h; // ok
Und so weiter.
Mit anderen Worten, std::function
Objekte eingeschränkt auf die Funktionstypen akzeptieren sie?
(derzeit auf GCC bekommen wir ein error: 'auto' parameter not permitted in this context
.)
Wie würden Sie eine 'std :: function' nennen, vorausgesetzt, dass so etwas existiert? –
@ n.m .: Sehr, sehr vorsichtig. –
@LightnessRacesinOrbit im Gegensatz zu den üblichen schlampigen Aufruf von Pre-C++ 17 Funktionen? –