Tag: std-function
C++11 class-Vorlage, die aufrufbar ist wie eine Funktion, und wickelt anderen callable-Typ und leitet Anrufe an.
6
Antworten
In der folgenden toy-Beispiel, würde ich mag, um den Namen einer Funktion. Die Funktion selbst wurde als std::function argument. Ist es möglich in C++ zu erhalten Namen von einer std::function Objekt? void printName(std::function<void()> func){ //Need a function
4
Antworten
Wenn Sie eine vorgefertigte Klasse oder eine Vorlagen-Funktion (oder Kombination aus beiden), wie binden Sie diese Funktion, (die Erhaltung der template-parameter type)? Bekam ich etwas Hilfe, um die grundlegende syntax in einem post weiter unten zu binden,
3
Antworten
Wenn ich brauche, um zu erzeugen ein lambda-Ausdruck, der fordert, eine member-Funktion, sollte ich erfassen, durch einen Verweis oder capture 'das'? Mein Verständnis ist, dass '&' erfasst nur die Variablen verwendet, aber 'dies' erfasst alle member-Variablen. Also
4
Antworten
Ich weiß, was funktoren sind und Wann Sie zu verwenden mit std algorithmen, aber ich habe nicht verstanden, was Stroustrup über Sie sagt in der C++11-FAQ. Kann mir jemand erklären, was std::bind und std::function sind, wenn Sie
5
Antworten
Ich versuche zu verstehen, warum std::function ist nicht in der Lage zu unterscheiden zwischen überladenen Funktionen. #include <functional> void add(int,int){} class A {}; void add (A, A){} int main(){ std::function <void(int, int)> func = add; } Im
2
Antworten
ist es notwendig, zu mir zu verwenden std::function aber ich weiß nicht, was ist std::function<void()> f_name = () { FNAME(); }; syntax bedeutet. Was ist das Ziel der Verwendung von std::function? Ist es ein Zeiger auf eine
4
Antworten
Kann ich leicht binden von member-Funktionen zu einem std::function durch das einwickeln von Ihnen mit einem lambda-Ausdruck mit capture-Klausel. class Class { Class() { Register([=](int n){ Function(n); }); } void Register(std::function<void(int)> Callback) { } void Function(int Number)
2
Antworten
Ich habe ein problem, das Verständnis, Funktion, Arten (Sie werden z.B. als Signature template-parameter eines std::function): typedef int Signature(int); //the signature in question typedef std::function<int(int)> std_fun_1; typedef std::function<Signature> std_fun_2; static_assert(std::is_same<std_fun_1, std_fun_2>::value, "They are the same, cool."); int
5
Antworten
Nehmen Sie die folgenden minimal-Beispiel: using Type1 = std::function<void(void)>; template <typename T> using Type2 = std::function<void(T)>; Type1 whyDoesThisWork; Type2<void> andYetThisDoesNot; Wenn der zweite Typ alias, bekomme ich die Fehlermeldung "Argument kann nicht 'void' - Typ". (Getestet habe
7
Antworten
Dies ist wahrscheinlich eine philosophische Frage, aber ich lief in das folgende problem: Wenn Sie definieren ein std::function, und Sie nicht initialisiert korrekt, Ihre Anwendung zum Absturz bringen, wie diese: typedef std::function<void(void)> MyFunctionType; MyFunctionType myFunction; myFunction(); Werden,
2
Antworten
Ich Frage mich, wie man richtig überprüfen, ob ein std::function leer 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); }
2
Antworten
Dem folgenden Programm nicht kompilieren : #include <iostream> #include <vector> #include <functional> #include <algorithm> #include <cstdlib> #include <cmath> void asort(std::vector<double>& v, std::function<bool(double, double)> f) { std::sort(v.begin(), v.end(), (double a, double b){return f(std::abs(a), std::abs(b));}); } int main() {
6
Antworten
Ich möchte erstellen Sie eine std::set mit einer benutzerdefinierten Vergleichsfunktion. Ich könnte es definieren als eine Klasse mit operator()aber ich wollte genießen die Möglichkeit der Definition eines lambda-wo es verwendet wird, also habe ich beschlossen zu definieren,
5
Antworten
Wie Vergleiche ich zwei C++11 std::functions mit operator== und zurück true wenn beide, sagte functions beziehen sich auf die gleiche Funktion Zeiger? InformationsquelleAutor der Frage JesseTG | 2013-12-30
7
Antworten
Dank C++11 erhalten wir die std::function Familie der Funktor-Wrapper. Leider höre ich nur schlechte Sachen über diese neuen Ergänzungen. Die beliebteste ist, dass Sie schrecklich langsam. Habe es getestet und Sie wirklich saugen im Vergleich mit Vorlagen.
5
Antworten
In meiner C++ Anwendung (Visual Studio 2010 verwenden), brauche ich zum speichern einer std::function, wie diese: class MyClass { public: typedef std::function<int(int)> MyFunction; MyClass (Myfunction &myFunction); private: MyFunction m_myFunction; //Should I use this one? MyFunction &m_myFunction; //Or