1 #ifndef FWCore_SOA_ColumnFillers_h 2 #define FWCore_SOA_ColumnFillers_h 44 template <
typename... Args>
49 template<
int I,
typename ELEMENT,
typename RET>
50 auto callFiller(ELEMENT&& iEl, RET*, std::true_type) -> decltype(std::get<I>(m_fillers).m_f(iEl)) {
54 template<
int I,
typename ELEMENT,
typename RET>
59 template<
int I,
typename ELEMENT,
typename COLUMN>
62 using COL =
typename Pair::Column_type;
64 return callFiller<I>(iEl,
67 std::true_type, std::false_type>{});
69 return tryValue<I+1>(iEl,
static_cast<COLUMN*
>(
nullptr),
70 std::conditional_t<
I+1 ==
sizeof...(Args),
71 std::false_type, std::true_type>{},
73 std::false_type, std::true_type>{});
76 template<
int I,
typename ELEMENT,
typename COLUMN>
78 return value_for_column(iEl,static_cast<COLUMN*>(
nullptr));
80 template<
int I,
typename ELEMENT,
typename COLUMN>
84 template<
int I,
typename ELEMENT,
typename COLUMN>
92 template<
typename ELEMENT,
typename COLUMN>
94 return tryValue<0>(iEl,
static_cast<COLUMN*
>(
nullptr), std::true_type{},std::true_type{});
98 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