ラムダのタイプは関数ポインターであるという認識がありました。次のテストを実行したところ、間違っていることがわかりました(デモ)。
#define LAMBDA [] (int i) -> long { return 0; }
int main ()
{
long (*pFptr)(int) = LAMBDA; // ok
auto pAuto = LAMBDA; // ok
assert(typeid(pFptr) == typeid(pAuto)); // assertion fails !
}
上記のコードにはポイントがありませんか?そうでない場合、キーワードtypeof
で推定されたときのラムダ式は何ですか?auto