2014-09-25 149 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++)或编译器使用的实现。