簡體   English   中英

在 lambda 捕獲中創建一個數組

[英]Create an array inside a lambda capture

Lambda 捕獲允許我們創建新變量,例如:

auto l = [x = 10]() { };

我知道這也適用於std::array但 C 風格的數組呢?

需要明確的是,我不想在這里復制或引用數組。 我想在捕獲子句中創建一個新的。

它不能像當前為 C 樣式數組指定的那樣工作。 一方面,捕獲語法不允許聲明符復合類型。 即以下是無效的作為捕獲

*x = whatever
x[] = whatever
(*x)() = whatever

所以我們不能“幫助決定”應該如何確定捕獲的變量的類型。 捕獲規范總是使其本質上等同於以下初始化語法之一

auto x = whatever
auto x { whatever }
auto x ( whatever )

現在,這從whatever初始化x 這將始終涉及某種形式或形式的表達。 由於表達式永遠不會將它們的 C 數組類型保留在某些上下文( sizeofdecltype等)之外,因為它們會衰減為指針,因此x的類型永遠不能推導出為數組類型。

暫無
暫無

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

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