2017-05-11 31 views
3

觀察:「結構化綁定」 與 「分解聲明」

分解聲明。 [..]最初被稱爲「結構化綁定」。

[..] C++ 17分解聲明(以前稱爲 「結構化綁定」 的功能)。

問題:

  • 這兩個的是正確的和最新的任期,我​​們應該使用?
  • 爲什麼同一個概念有兩個名字?
  • 如果分解聲明真的被重命名爲結構化綁定,原因是什麼?
+1

目前的草案是N4659。 –

回答

7

根據P0615中的措辭,新的正確名稱將是「結構化綁定聲明」。基本上,在:

auto [x,y] = Point(4,2); 

完整的語句被稱爲「結構化綁定聲明」,而標識符xy被稱爲「結構化綁定」。這些將成爲C++ 17的官方術語。事實上,最新的草案部分現在標題爲Structured Binding Declarations


的問題是,有兩個概念,這需要兩個不同的名字 - 這樣的聲明語句原來的措辭本文采用分解聲明(術語「結構化綁定」並沒有出現在措辭的話) 。然而,對於大多數用戶來說,這很愚蠢,因爲只有一個概念 - 結構化綁定 - 所以有兩個不同的名字很難學。如果編譯器錯誤消息在其消息中使用了「分解聲明」,尤其令人困惑。無論使用術語「分解聲明」,該功能的名稱始終是結構化綁定。

在科納,EWG決定堅持這兩個名字,但至少讓他們聽起來密切相關。