#include <array>
#include <iostream>
#include <utility>

template <typename T, std::size_t...Is>
std::array<T, sizeof...(Is)> make_array(const T& value, std::index_sequence<Is...>)
{
    return {{(static_cast<void>(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>());
}

int main()
{
    auto a = make_array<42>('.');
    
    for (auto c : a) {
        std::cout << c;   
    }
    std::cout << std::endl;
}