使用隐含长度初始化std :: array

jca*_*cai 0 c++ arrays c++11 stdarray

在C中你可以做到int a[] = {1,2,3,4,5},但是C++ 11 std::array<int> a = {1,2,3,4,5}会给出"模板参数太少"的编译错误.有什么方法吗?

Jar*_*d42 5

你可以拥有的最好的是make_array,例如:

template<typename T, typename...Ts>
constexpr std::array<T, 1 + sizeof...(Ts)> make_array(T&& head, Ts&&...tail)
{
     return {{ std::forward<T>(head), std::forward<Ts>(tail)... }};
}
Run Code Online (Sandbox Code Playgroud)