15 #include <fmt/format.h>
37 template <
typename Histo, std::
size_t N>
40 template <
typename OWNER,
typename FormatName,
typename FormatTitle,
std::size_t... Ns,
41 typename =
typename std::enable_if_t<std::is_invocable_v<FormatName, int>>,
42 typename =
typename std::enable_if_t<std::is_invocable_v<FormatTitle, int>>>
45 :
std::
array<Histo,
N>{ Histo{ owner, fname( Ns ), ftitle( Ns ), allAxis }... } {
46 static_assert(
sizeof...( Ns ) < 1000,
"Using HistogramArray with 1000 arrays or more is prohibited. This "
47 "would lead to very long compilation times" );
55 static_assert(
sizeof...( Ns ) < 1000,
"Using HistogramArray with 1000 arrays or more is prohibited. This "
56 "would lead to very long compilation times" );
97 typename Seq = std::make_integer_sequence<unsigned int, std::tuple_size_v<typename Histo::AxisTupleType>>>
99 template <
typename Histo,
std::size_t N,
unsigned int... ND>
102 template <
typename OWNER,
typename FormatName,
typename FormatTitle>
103 HistogramArray( OWNER* owner, FormatName&& fname, FormatTitle&& ftitle,
typename Histo::AxisTupleType&& allAxis )
104 :
details::HistogramArrayInternal<Histo,
N>( owner, fname, ftitle,
std::make_integer_sequence<
std::size_t,
N>{},
105 std::forward<typename Histo::AxisTupleType>( allAxis ) ) {}
107 template <
unsigned int I>
108 using AxisType = std::tuple_element_t<I, typename Histo::AxisTupleType>;
110 template <
typename OWNER,
typename FormatName,
typename FormatTitle>