2015-12-05 35 views
5

在下面C++ Going native video
有語言特徵的提及所謂的「結構性的結合」。關於「結構綁定」的提案在哪裏?

我曾經referred這個概念稱爲「解構」(一個JavaScript的背景正在添加)。

該功能將允許用戶捕獲多個返回值,而無需使用std::tie,或指定的類型。

例子:

std::map<std::string,int> table; 
auto { cursor, inserted } = table.insert({"hello",0}); 

在哪裏可以找到這個建議,並跟蹤其進展情況?

+0

[P0144R0](http://wg21.link/P0144R0)。另外一個競爭性提案 - [P0151R0](http://wg21.link/P0151R0)。我相當肯定這是脫離主題... –

+0

我在搜索「結構」。謝謝。 @ T.C。那麼我相信SO會很快關閉它。 –

+0

我認爲這是一個小題目,我認爲重新說明更多地關注這個提案的狀態,而不是它改進問題的地方。 –

回答

12

你指的建議是P0144R0: Structured Bindingspost-Kona mailing將本文列出爲Evolution工作組。目前的Evolution Working Group(EWG) active issue list沒有涵蓋,Nicol Bolos指出EWG活動問題清單尚未更新爲科納。一旦它顯示在EWG活動列表中,您就可以通過跟蹤問題來跟蹤提案。

有一些非常好的旅行報告,特別Botond Ballo's trip report下節介紹了此提議提案進一步的工作是鼓勵和它說:

用於去構造初始化的提議,這將允許編寫 auto {x,y,z} = expr;其中expr的類型是一個元組狀物體, 其元素將被綁定到變量x,y,和z(其本 構建聲明)。 「類元組對象」包括std :: tuple, std :: pair,std :: array和聚合結構。該提案缺少一個 機制,以便將非聚合用戶定義類型修改爲 「元組狀態」並使用此語法; EWG的反饋意見是這樣的機制很重要。此外,EWG建議將該提案擴展爲允許(可選)指定x,y和z的類型 ,而不是推導其類型。

我們可以通過轉到WG21 site並轉到papers section找到WG21會議郵件。

正如T.C.注意到還有一個與之競爭的提案P0151R0: Proposal of Multi-Declarators它說:

我們提出了在 P0144R0定義的「結構化綁定」,其中「更好」定義爲更簡潔,更ortogonal一個更好的方法,更 一般,更具表現力,更少(分析)不明確。

+0

我正要糾正錯字,但後來看到原來的提案有相同的錯字。現在我被撕毀了:P – SirGuy

+0

「更多正交[原文如此],更一般的,」 sic erat scriptum – Vagrant