mutableラムダはパラメータリストを省略できない
comp.std.c++ - Empty parameter list not optional for mutable lambdas?
パラメータを受け取らないラムダ式は、パラメータリストを省略できることになっていますが
int x; // 以下の2つは同じ意味 auto f1 = [&]() { ++x; }; auto f2 = [&] { ++x; };
パラメータリストを省略した場合にはmutableを付けることができません。
int x; auto f3 = [=]() mutable { ++x; }; // OK auto f4 = [=] mutable { ++x; }; // エラー!
この問題のために「mutableラムダはパラメータリストを省略できません」とわざわざ説明しないと
いけないので、mutableラムダもパラメータリストを省略できるようにして、
同じ規則にしたほうがいいんじゃない、という意見がScott Meyersから挙がっていました。