【发布时间】:2016-10-18 03:38:54
【问题描述】:
我如何初始化std::array<T, n>如果 T 不是默认可构造的?
我知道可以这样初始化它:
T t{args};
std::array<T, 5> a{t, t, t, t, t};
但n对我来说是模板参数:
template<typename T, int N>
void f(T value)
{
std::array<T, N> items = ???
}
即使不是模板,如果n 太大,手动重复值也是相当难看的。
【问题讨论】:
-
是的,你可以写一两个函数来生成它们。
-
'fill()` 会有帮助吗?
-
@Arun,不。它只能在已经构建的数组上调用。
-
std::array是一个聚合,你无能为力 -
@Nawaz:非常有创意。似乎没有你能做的太多,尽管你可以做到这一点:) +1
标签: c++ arrays templates c++11 initialization