我通過結構化的綁定紙脫脂這裏http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf,但我沒能得到很好的意義上的類型結構的語法允許結合。我最好的猜測是該結構必須是一個聚合類型。或者只有公共數據成員。可以構建什麼類型結構的綁定工作,
有我缺少這個任何警告?
我通過結構化的綁定紙脫脂這裏http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf,但我沒能得到很好的意義上的類型結構的語法允許結合。我最好的猜測是該結構必須是一個聚合類型。或者只有公共數據成員。可以構建什麼類型結構的綁定工作,
有我缺少這個任何警告?
如果你不想專門std::tuple_size
,std::tuple_element
和get
你的類型,然後按[dcl.decomp]要求:
否則,所有
E
的非靜態數據成員應公開的E
或相同不含糊 公共基類的E
的直接成員,E
不得有一個匿名聯合成員,並在 標識符列表元素的數目應等於的E
非靜態數據成員的數量。
所以基本上所有的數據成員需要在同一個類中聲明,他們都必須是公開的,你需要提供相同數量的名字,因爲有成員。
也許這是gcc/clang bug /缺少正確的實現,但是這兩個編譯器都需要從結構體複製 - 我的意思是複製構造函數。你能評論這個嗎?如果您認爲有必要對此Q/A進行論述,我可以問這是一個問題嗎? – PiotrNycz
@PiotrNycz:我建議你等到C++ 17發佈之後;那麼這將是一個很好的問題。 –
對和元組看起來很好的例子,和圖節點類型。 –
@KerrekSB :)是啊,我明白了,我只是希望瞭解更多的關於這類型的結構,他們可以結合,例如,如果我有自己的結構細節。 – Curious
當然。如果你不想依賴公共成員,你可以爲你的類型專門設置'std :: get'和'std :: tuple_size'。 –