首页 > 解决方案 > `std::tuple_size 的目的是什么`

问题描述

我有两个关于std::tuple_size<std::array>.std::array

首先,类中有一个 constexprsize()成员函数std::array,为什么需要std::tuple_size<std::array>

其次,名称是否tuple_size具有误导性?

标签: c++stdarray

解决方案


std::tuple_size(和它的朋友std::tuple_elementand )的设计目标std::get是不仅适用于文字std::tuples,而且适用于任何类似元组的东西。类似元组的东西通常只是意味着它是一种包含固定数量的有序元素的复合类型。

例如,通过查看结构化绑定是如何定义的,您可以清楚地看到这种抽象的使用情况:它们允许分解任何具有 和 的合理实现std::tuple_sizestd::tuple_element东西get<I>

在这种“类元组”的扩展概念下,只有std::array(and std::pair) 将这些特征专门化为 N 个相同类型的元组(分别是大小为 2 的元组)才有意义。


推荐阅读