私はVisual C++ 10では、引数の少なくとも1つがラムダであるときにADLが失敗することに気付きました。ラムダ引数があるとADLが失敗しますか?
std::vector<float> vec;
for_each(begin(vec), end(vec), [](float) {});
上記はVC++ 10および11(ベータ版)でコンパイルできません(開始点と終了点はADLで見つかります)。ラムダ関数を通常のフリー関数に変換すると、期待通りに動作します。
私はHerb Suttersのブログで一度尋ねたことがあります。また、msdn connectに関するいくつかの記事を読んでいます。これはバグです.Lambdaの最新の標準を実装していません。理解できる。ものはまだ焼いた形ではありませんでした。 MS接続では、次のリリース、つまりvc 11では解決されないという邪魔なコメントもあります。
私の質問はです。はC++ 11標準で動作すると思われますか?私はそれを理解できない。私は本当に私のfor_eachと他のアルゴリズムのstd ::に接頭辞を付ける必要がありますか?lambdasを使用していますか? 私は何とかこの動作がvC++ 11のリリース後も変更されないと思われます。
行う無料何の機能あなたが使う? –
void f(float){}のような単純なものでも動作します。または関数呼び出しの外側にラムダを宣言します:auto f = [](float){}; –