1. ホーム
  2. c++

[解決済み】ラムダ・キャプチャをconst参照にする?

2022-04-13 19:44:20

質問

でキャプチャすることは可能ですか? const をラムダ式で参照できますか?

例えば、以下のようにマークされた代入を失敗させたいのです。

#include <algorithm>
#include <string>

using namespace std;

int main()
{
    string strings[] = 
    {
        "hello",
        "world"
    };
    static const size_t num_strings = sizeof(strings)/sizeof(strings[0]);

    string best_string = "foo";

    for_each( &strings[0], &strings[num_strings], [&best_string](const string& s)
      {
        best_string = s; // this should fail
      }
    );
return 0;
}

アップデートする。 これは古い質問なので、C++14でこれに役立つ設備があれば更新するのが良いかもしれません。C++14の拡張機能では、const参照でconstでないオブジェクトを捕捉することができるのでしょうか?( 2015年8月 )

解決方法は?

const は、n3092の時点ではキャプチャーの文法にありません。

capture:
  identifier
  & identifier
  this

テキストではcapture-by-copyとcapture-by-referenceにしか触れておらず、const-nessの類には触れていない。

私には見落としのように感じられますが、標準化のプロセスをあまりよく見ていないのです。