std::tuple是否必须使用空基类优化?

4

Will

std::is_empty<std::tuple<Args...>>::value

如果Args中的每个类型都为空,那么返回true?在gcc 4.9中进行了快速测试,表明是这种情况,但标准是否要求呢?


2
谁说tuple类继承自任何东西? - jrok
3
没人说是那样的。问题是在问是否是那种情况。 - Mike Seymour
就我所了解的标准,似乎对元组实现没有任何要求。 - Bulletmagnet
1个回答

6
不需要使用继承就可以启用空基类优化的要求,这个要求不适用于元组tuple
元组库的唯一文本规范是: “本子句描述了提供元组类型作为类模板的元组库。该类模板可以使用任意数量的参数进行实例化。每个模板参数指定元组中一个元素的类型。因此,元组是值的异构、固定大小的集合。具有两个参数的元组实例类似于具有相同两个参数的对(pair)实例。”
其中没有提及任何实现细节,并且模板规范开始如下:
template <class... Types>
class tuple {

未指定它必须继承自任何东西。


+1 我仍然觉得这个问题有点奇怪,但这是完全准确的答案。 - Shafik Yaghmour

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接