簡體   English   中英

通過引用遞歸 lambda

[英]recursive lambda via reference

這段代碼正確嗎?

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

int x = f(42);

object 在引用 lambda 之前構造是否存在潛在問題? 或者這段代碼絕對正確?

按值捕獲 f 會導致 msvc2010 編譯器崩潰。

這應該可以正常工作,只要您遵循存儲在 lambda 中的堆棧變量的引用規則。 它是定義明確的 C++11 代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM