Um eine std :: Funktion Variable auf eine Lambda-Funktion mit Standardargument gesetzt ich auto
wie in verwenden:Wie sollte ich eine std :: function-Variable mit Standardargumenten definieren?
auto foo = [](int x = 10){cout << x << endl;};
foo();
Das 10. in a druckt
Aber ich möchte, dass die foo Variable residieren Struktur. In einer Struktur kann ich auto
nicht verwenden.
struct Bar
{
auto foo = [](int x = 10}(cout << x << endl}; //error: non-static data member declared ‘auto’
};
Bar bar;
bar.foo();
Ersetzen auto
mit std :: function
struct Bar
{
std::function<void(int x = 10) foo = [](int x = 10}(cout << x << endl}; //error: default arguments are only permitted for function parameters
};
Bar bar;
bar.foo();
oder
struct Bar
{
std::function<void(int) foo = [](int x = 10}(cout << x << endl};
};
Bar bar;
bar.foo(); //error: no match for call to ‘(std::function<void(int)>)()’
Ohne die Struktur und Ersetzen auto
für std :: function:
std::function<void(int x)> foo = [](int x = 10){cout << x << endl;};
foo(); //error: no match for call to ‘(std::function<void(int)>)()’
Also, wie soll ich foo erklären?
Es gibt keine Möglichkeit, eine 'std :: function' mit Standardargumenten zu machen. –