用ASCII空格初始化模板<size_t n =“”> std :: array <char,n =“”>?

时间:2016-12-21 08:37:22

标签: c++ arrays c++11 templates constructor

我们可以使用FileStream初始化std::array<char, 3>,但如果大小由模板参数= { ' ', ' ', ' ' }给出,该怎么办?我们不能做std::string::string(size_type count, CharT ch)之类的事情,用给定的N填充实例吗?

我应该看看std::integer_sequence吗?

1 个答案:

答案 0 :(得分:3)

您可以使用索引序列:

template <typename T, std::size_t...Is>
std::array<T, sizeof...(Is)> make_array(const T& value, std::index_sequence<Is...>)
{
    return {{(Is, value)...}};
}

template <std::size_t N, typename T>
std::array<T, N> make_array(const T& value)
{
    return make_array(value, std::make_index_sequence<N>());
}

Demo