是没有
std::array<T,size>::array(const T& value);
Run Code Online (Sandbox Code Playgroud)
疏忽?它似乎对我有用,而动态容器(如std::vector)确实有类似的构造函数.
我完全清楚
std::array<T,size>::fill(const T& value);
Run Code Online (Sandbox Code Playgroud)
但这不是构造函数,内存将首先归零.如果我想什么都-1好像这个家伙?
假设foo_t具有命名构造函数的类型,make_foo().现在,我想要真正拥有123个foo - 不多也不少.所以,我在考虑一个std::array<foo_t, 123>.现在,如果foo_t是默认构造的,我会写:
std::array<foo_t, 123> pity_the_foos;
std::generate(
std::begin(pity_the_foos), std::end(pity_the_foos),
[]() { return make_foo(); }
);
Run Code Online (Sandbox Code Playgroud)
而鲍勃是我的叔叔,对吗?不幸的是...... foo_t没有默认的ctor.
那么我应该如何初始化我的数组呢?我是否需要使用一些可变模板扩展伏都教?
注意:如果有帮助,答案可能会使用C++ 11,C++ 14或C++ 17中的任何内容.