読者です 読者をやめる 読者になる 読者になる

mutableラムダはパラメータリストを省略できない

C++

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から挙がっていました。