Als «std-function» getaggte Fragen

7
std :: function vs template
Dank C ++ 11 haben wir die std::functionFamilie der Funktor-Wrapper erhalten. Leider höre ich immer wieder nur schlechte Dinge über diese Neuzugänge. Am beliebtesten ist, dass sie schrecklich langsam sind. Ich habe es getestet und sie saugen wirklich im Vergleich zu Vorlagen. #include <iostream> #include <functional> #include <string> #include <chrono> …


3
Wie kann ich richtig überprüfen, ob die Funktion std :: in C ++ 11 leer ist?
Ich habe mich gefragt, wie ich richtig prüfen soll, ob ein std::functionleer ist. Betrachten Sie dieses Beispiel: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Dieser Code wird in MSVC einwandfrei kompiliert, aber wenn ich doSomething()ohne …

6
C ++ 11 std :: set Lambda-Vergleichsfunktion
Ich möchte eine std::setmit einer benutzerdefinierten Vergleichsfunktion erstellen . Ich könnte es als Klasse mit definieren operator(), aber ich wollte die Möglichkeit genießen, ein Lambda dort zu definieren, wo es verwendet wird. Deshalb habe ich beschlossen, die Lambda-Funktion in der Initialisierungsliste des Konstruktors der Klasse zu definieren, die das std::setals …


1
std :: function const Korrektheit
Angenommen, ich habe einen aufrufbaren Typ wie folgt: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Beachten Sie, dass mutable_callablees eine Nicht-Konstante gibt operator(), die eine Mitgliedsvariable ändert ..... Angenommen, ich erstelle ein std::functionOut aus meinem Typ: std::function<int()> foo = mutable_callable{}; …

2
Der Aufruf von Lambda ist trotz expliziter Angabe des Rückgabetyps nicht eindeutig
Eine überladene Funktion sollte beide Funktoren aufnehmen, da der Lambda-Typ entscheidbar ist (umsetzbar auf einen std::function(bitte korrigieren Sie mich, wenn ich falsch liege). Die Frage ist: Warum gibt es unten einen Kompilierungsfehler, obwohl der Lambda-Typ explizit ist definiert? ( [&]() -> Type {}) Bitte beachten Sie, dass ich für meine …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.