2014-09-25 77 views
2

當我定義一個像std::tuple<int, char> foo;這樣的元組時,它裏面的類是否存儲intchar的值?我正在尋找外行的術語解釋。元組在哪裏存儲數據?

+0

其具體實現。進入你的''並找出答案。在我見過的每一種情況下,他們都是通過可擴展擴展完成的,每個擴展級別都有一個成員/類型/索引三重奏。 – WhozCraig 2014-09-25 07:45:55

回答

1

如果你花時間去消化它,那麼GNU implementation實際上是一個使用C++ 0x variadic模板遞歸繼承的體面的例子。這不是一個容易被外行解釋的主題,通過反覆閱讀代碼來理解它是最好的理解,直到它有意義。

從我所看到的他們繼承向上的元組的類型列表中的每個後續類型,每個繼承類負責該類型的存儲,直到遞歸達到類型列表的末尾。

+0

遞歸繼承是我的問題的答案!謝謝! – Semirix 2014-09-25 13:12:12

1

它想要的任何地方,真的。我的意思是,這是一個實現細節。但我會說所有的實現最終都會歸結爲元組對象內具有自動存儲持續時間的數據成員。如果您真的感興趣,可以查看開源標準庫實現的源代碼(如libc++libstdc++)或編譯器使用的實現。