Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
このコードは正しいですか?
std::function<int(int)> f = [&f](int n) -> int { return n <= 1 ? 1 : n * f(n - 1); }; int x = f(42);
ラムダへの参照として渡される前のオブジェクト構築に潜在的な問題はありますか?または、このコードは絶対に正しいですか?
fを値でキャプチャすると、msvc2010コンパイラでクラッシュが発生します。
ラムダに格納されたスタック変数への参照の規則に従っている限り、これは正常に機能するはずです。これは明確に定義された C++11 コードです。