1. ホーム
  2. c++

[解決済み] C++0x lambda capture by value always const?

2022-11-16 06:09:01

質問

値でキャプチャし、キャプチャした値を非恒等式にする方法はありますか? 私は、capture & したいライブラリ ファンクターを持っています。非恒等式であるがそうでなければならないメソッドを呼び出します。

以下はコンパイルできませんが、foo::operator()をconstにすると直ります。

struct foo
{
  bool operator () ( const bool & a )
  {
    return a;
  }
};


int _tmain(int argc, _TCHAR* argv[])
{
  foo afoo;

  auto bar = [=] () -> bool
    {
      afoo(true);
    };

  return 0;
}

どのように解決するのですか?

mutableを使用する。


auto bar = [=] () mutable -> bool ....

mutableがなければ、ラムダオブジェクトの演算子()をconstで宣言していることになります。