1 #ifndef FWCore_SOA_ColumnFillers_h 2 #define FWCore_SOA_ColumnFillers_h 43 template <
typename... Args>
48 template<
int I,
typename ELEMENT,
typename RET>
49 auto callFiller(ELEMENT&& iEl, RET*, std::true_type) -> decltype(std::get<I>(m_fillers).m_f(iEl)) {
53 template<
int I,
typename ELEMENT,
typename RET>
58 template<
int I,
typename ELEMENT,
typename COLUMN>
61 using COL =
typename Pair::Column_type;
63 return callFiller<I>(iEl,
66 std::true_type, std::false_type>{});
68 return tryValue<I+1>(iEl,
static_cast<COLUMN*
>(
nullptr),
69 std::conditional_t<
I+1 ==
sizeof...(Args),
70 std::false_type, std::true_type>{},
72 std::false_type, std::true_type>{});
75 template<
int I,
typename ELEMENT,
typename COLUMN>
77 return value_for_column(iEl,static_cast<COLUMN*>(
nullptr));
79 template<
int I,
typename ELEMENT,
typename COLUMN>
83 template<
int I,
typename ELEMENT,
typename COLUMN>
91 template<
typename ELEMENT,
typename COLUMN>
93 return tryValue<0>(iEl,
static_cast<COLUMN*
>(
nullptr), std::true_type{},std::true_type{});
97 template<
typename... Args>
COLUMN::type tryValue(ELEMENT &&iEl, COLUMN *, std::true_type, std::false_type)
RET callFiller(ELEMENT &&iEl, RET *, std::false_type)
COLUMN::type value(ELEMENT &&iEl, COLUMN *)
COLUMN::type tryValue(ELEMENT &&iEl, COLUMN *, std::false_type, std::true_type)
ColumnFillers(Args...iArgs)
ColumnFillers< Args... > column_fillers(Args...iArgs)
const std::complex< double > I
auto callFiller(ELEMENT &&iEl, RET *, std::true_type) -> decltype(std::get< I >(m_fillers).m_f(iEl))
COLUMN::type tryValue(ELEMENT &&iEl, COLUMN *, std::false_type, std::false_type)
COLUMN::type tryValue(ELEMENT &&iEl, COLUMN *, std::true_type, std::true_type)
std::tuple< Args... > Layout