Lambdas haben unbestimmten Typ, so können Sie nicht wissen, welchen Typ man haben wird. Offensichtlich Sie das Lambda definiert werden nicht vom Typ Bool sein (es ein bool zurückgeben kann, aber es ist nicht ein), so können Sie diese stattdessen tun würden:
struct foo{
static int faa(int x);
};
int foo::faa(int x){
auto isCon = []()->bool {
return true;
};
return isCon();
}
Hier ist das auto
Schlüsselwort teilt den Compiler ableiten der Typ für dich. Der Ausdruck ->bool
sagt dem Compiler, dass das Lambda ein Bool zurückgibt.
Allerdings gibt Ihre foo::faa()
Funktion einen int zurück, so dass ein Cast möglicherweise stattfindet, weil Ihr Lambda einen Bool zurückgeben kann (was nichts mit der Frage zu tun hat, aber passen Sie auf).
Was ist der spezifische Fehler, den Sie bekommen? – Barmar
ein Lambda ergibt einen unbestimmten Typ, nicht ein 'bool', verwenden' auto isCon = ' – vu1p3n0x
Related: https://stackoverflow.com/questions/7951377/what-is-the-type-of-lambda-when-deduced -mit-automatisch-in-c11 – Barmar