勉強していたら、例でラムダ式が 2 つ使われているのを突然見かけ、この使い方に戸惑いを感じたのです[](){}
が、確認したところ、前者は標準的なラムダ式の使い方で、後者はlambda + call の短縮版で、つまり、省略された () はパラメータの受け渡しに使用され、匿名関数の構築後に直接それ自体を呼び出します。例えば:[]{}()
[]{}()
[](){}
[]{}()
int c = [](int n){
return [n](int x){
return n + x;
}(1);
};
a = c(2);
int c = [](int n){
return [n]{
return 1;
}();
}(2);