初始化模板<size_t N> std::array<char, N> 带有 ASCII 空格?

Initialize template<size_t N> std::array<char, N> with ASCII spaces?

本文关键字:gt lt char 带有 ASCII 空格 array size 初始化 std      更新时间:2023-10-16

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

我应该看std::integer_sequence

您可以使用索引序列:

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