1

このコードは正しいですか?

std::function<int(int)> f = [&f](int n) -> int
{
    return n <= 1 ? 1 : n * f(n - 1);
};

int x = f(42);

ラムダへの参照として渡される前のオブジェクト構築に潜在的な問題はありますか?または、このコードは絶対に正しいですか?

fを値でキャプチャすると、msvc2010コンパイラでクラッシュが発生します。

4

1 に答える 1

1

ラムダに格納されたスタック変数への参照の規則に従っている限り、これは正常に機能するはずです。これは明確に定義された C++11 コードです。

于 2012-04-06T16:25:40.827 に答える