我发现了很多设计问题,特别是传递std::array<>给函数时。基本上,当您初始化 std::array 时,它会接受两个模板参数<class T和size_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<>要以这种方式设计的问题。