hanno come questalambda restituisce '1' tutti i tempi
#include <iostream>
using namespace std;
int main()
{
cout<<[](){ return 0;};
cout<<[](){ return 3.2;};
cout<<[](){ return true;};
cout<<[](){ return false;};
cout<<[](){ return "Hello world!";};
cout<<[]()->int{ return 0;};
cout<<[]()->double{ return 3.2;};
cout<<[]()->bool{ return true;};
cout<<[]()->bool{ return false;};
cout<<[]()->const char*{ return "Hello world!";};
return 0;
}
compilarlo con gcc version 4.8.2
e la mia uscita è solo 1111111111
. Perché solo "1"?
Non si chiama mai il lambda: '[]() {return 10;}' vs '([]() {return 10;})()'. – Zeta
In VS 2013 ricevo il messaggio di errore "binario '<<': nessun operatore trovato che prende un operando di destra di tipo 'main ::
TobiMcNamobi
Lambdas senza cattura è implicitamente convertibile in un puntatore a funzione, che a sua volta è implicitamente convertibile in 'bool'. –