58 return [&]<I... Rs, I... Cs>(std::integer_sequence<I, Rs...>,
59 std::integer_sequence<I, Cs...>) {
60 auto make_row = [&]<I Rr>(std::integral_constant<I, Rr>) {
61 using elem_t = std::common_type_t<
decltype(f(
62 std::integral_constant<I, Rr>(),
63 std::integral_constant<I, Cs>()))...>;
64 return std::array<elem_t, C>{
65 f(std::integral_constant<I, Rr>(),
66 std::integral_constant<I, Cs>())...,
69 using row_t = std::common_type_t<
decltype(make_row(
70 std::integral_constant<I, Rs>()))...>;
71 return std::array<row_t, R>{{
72 make_row(std::integral_constant<I, Rs>())...,
74 }(std::make_integer_sequence<I, R>(), std::make_integer_sequence<I, C>());
88 return [&]<I... Ns>(std::integer_sequence<I, Ns...>) {
90 std::common_type_t<decltype(f(std::integral_constant<I, Ns>()))...>;
91 return std::array<elem_t, N>{{f(std::integral_constant<I, Ns>())...}};
92 }(std::make_integer_sequence<I, N>());
115template <
class Elem, std::
size_t N, std::array<Elem, N> Arr, auto... Ns>