41template <
typename Tp,
typename Up>
49template <
typename Tp,
typename Up,
typename Vp =
typename Tp::value_type>
51plus(Tp& _lhs,
const Up& _rhs,
type_list<>,
long) ->
decltype(std::begin(_lhs), void())
58 for(
decltype(_n) i = 0; i < _n; ++i)
60 auto litr = std::begin(_lhs) + i;
61 auto ritr = std::begin(_rhs) + i;
66template <
typename Tp,
typename Up,
typename Kp =
typename Tp::key_type,
67 typename Mp =
typename Tp::mapped_type>
69plus(Tp& _lhs,
const Up& _rhs,
type_list<>,
int) ->
decltype(std::begin(_lhs), void())
73 for(
auto litr = std::begin(_lhs); litr !=
std::end(_lhs); ++litr)
75 auto ritr = _rhs.find(litr->first);
78 plus(litr->second, ritr->second);
81 for(
auto ritr = std::begin(_rhs); ritr !=
std::end(_rhs); ++ritr)
83 auto litr = _lhs.find(ritr->first);
86 _lhs[ritr->first] = ritr->second;
90template <
typename Tp,
typename Up>
95template <
typename Tp,
typename Up,
size_t... Idx>
98 ->
decltype(std::get<0>(_lhs), void())
104template <typename Tp, typename Up, enable_if_t<!concepts::is_null_type<Tp>::value>>
Tp & plus(Tp &, const Up &)
auto resize(T &,...) -> void
constexpr auto get_size(const Tp &, std::tuple<>) -> size_t
std::integer_sequence< size_t, Idx... > index_sequence
Alias template index_sequence.
lightweight tuple-alternative for meta-programming logic
concept that specifies that a type is not a useful type
#define TIMEMORY_FOLD_EXPRESSION(...)