小编ruf*_*uff的帖子

为什么 std::array 需要大小作为模板参数而不是构造函数参数?

我发现了很多设计问题,特别是传递std::array<>给函数时。基本上,当您初始化 std::array 时,它会接受两个模板参数<class Tsize_t size>。但是,当您创建需要 和 的函数时std::array,我们不知道大小,因此我们还需要为函数创建模板参数。

template <size_t params_size> auto func(std::array<int, params_size> arr);
Run Code Online (Sandbox Code Playgroud)

为什么不能std::array在构造函数中获取大小?(IE):

auto array = std::array<int>(10);
Run Code Online (Sandbox Code Playgroud)

那么这些函数看起来就不那么激进了,并且不需要模板参数,如下所示:

auto func (std::array<int> arr);
Run Code Online (Sandbox Code Playgroud)

我只是想知道 的设计选择std::array,以及为什么这样设计。

这不是一个由于错误而产生的问题,而是一个为什么std::array<>要以这种方式设计的问题。

c++ std c++11 stdarray

5
推荐指数
1
解决办法
693
查看次数

标签 统计

c++ ×1

c++11 ×1

std ×1

stdarray ×1