当我定义像std::tuple<int, char> foo;
这样的元组时,它在类中的哪个位置存储了int
和char
值?我正在寻找外行人的条款解释。
答案 0 :(得分:1)
它想要的任何地方,真的。我的意思是,它是一个实现细节。但我想说所有实现最终都会归结为在元组对象中具有自动存储持续时间的数据成员。如果您真的感兴趣,可以查看开源标准库实现的源代码(如libc++和libstdc++)或编译器使用的实现。
答案 1 :(得分:1)
如果你花时间来消化它,那么GNU implementation实际上是使用C ++ 0x可变参数模板的递归继承的一个很好的例子。这不是一个容易让外行解释的主题,并且通过一遍又一遍地阅读代码直到有意义,才能最好地理解。
从我所看到的,它们继续向上继承元组列表中的每个连续类型,每个继承的类负责该类型的存储,直到递归到达类型列表的末尾。