是std :: tuple需要使用空基类优化吗?

Mad*_*ist 3 c++

std::is_empty<std::tuple<Args...>>::value
Run Code Online (Sandbox Code Playgroud)

如果每个类型都Args为空,则返回true ?gcc 4.9中的快速测试表明情况确实如此,但标准是否需要?

Mik*_*our 6

不,没有要求tuple使用继承来启用空基类优化.

元组库的唯一文本规范是:

本小节描述了元组库,它提供元组类型作为可以使用任意数量的参数实例化的类模板元组.每个模板参数指定元组中元素的类型.因此,元组是异构的,固定大小的值集合.具有两个参数的元组实例化类似于具有相同两个参数的对的实例化.

没有提及任何实施细节; 并且模板规范开始:

template <class... Types>
class tuple {
Run Code Online (Sandbox Code Playgroud)

没有指定它必须从任何东西继承.