web-dev-qa-db-ja.com

値によるC ++ 0xラムダキャプチャは常にconst?

値でキャプチャし、キャプチャした値を非定数にする方法はありますか?私は、ライブラリー・ファンクターを持っています。これは、非constである必要があるメソッドをキャプチャーして呼び出したいものです。

以下はコンパイルされませんが、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;
}
97
Zac

可変を使用します。


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

可変でない場合は、ラムダオブジェクトconstの演算子()を宣言しています。

153
Edward Strange