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

namespace detail
{

    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 detail::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;
}
