若要获取尚未展开参数包的序列或重复,请使用
std::make_index_sequence
:
#include <utility>
#include <array>
struct not_default_constructible
{
not_default_constructible(int){}
};
template<typename T, unsigned long N>
struct array_of_ndc
{
public:
std::array<T,N> arr;
explicit array_of_ndc(const T& init)
: array_of_ndc(init, std::make_index_sequence<N>{})
{}
private:
template <std::size_t ...I>
explicit array_of_ndc(const T& init, std::index_sequence<I...>)
: arr{ { (static_cast<void>(I), init)... } }
{}
};