1#ifndef TATOOINE_MAKE_ARRAY_H
2#define TATOOINE_MAKE_ARRAY_H
10template <
typename T,
size_t... Is>
11constexpr auto make_array(T&& default_data, std::index_sequence<Is...> ) {
12 return std::array<std::decay_t<T>,
sizeof...(Is)>{
13 ((void)Is, default_data)...};
16template <
typename T,
typename... Data>
18 return std::array<T,
sizeof...(Data)>{
static_cast<T
>(data)...};
21template <
typename T,
size_t N>
23 return make_array(T{}, std::make_index_sequence<N>{});
26template <
size_t N,
typename T>
28 return make_array(default_data, std::make_index_sequence<N>{});
31template <
typename T,
size_t N>
33 return invoke_unpacked([](
auto&&... data) {
return make_array<T>(data...); },
Definition: algorithm.h:6
constexpr auto make_array()
Definition: make_array.h:22
constexpr decltype(auto) invoke_unpacked(F &&f)
All arguments are bound -> just call f.
Definition: invoke_unpacked.h:15
Definition: invoke_unpacked.h:11