41template <
typename Tp,
typename Up>
49template <
typename Tp,
typename Up,
typename Vp =
typename Tp::value_type,
59 for(
decltype(_n) i = 0; i < _n; ++i)
61 auto litr = std::begin(_lhs) + i;
62 auto ritr = std::begin(_rhs) + i;
67template <
typename Tp,
typename Up,
typename Vp =
typename Tp::value_type,
70divide(Tp& _lhs,
const Up& _rhs,
type_list<>,
long) ->
decltype(std::begin(_lhs), void())
74 for(
decltype(_n) i = 0; i < _n; ++i)
76 auto litr = std::begin(_lhs) + i;
81template <
typename Tp,
typename Up,
typename Kp =
typename Tp::key_type,
82 typename Mp =
typename Tp::mapped_type,
83 enable_if_t<!std::is_arithmetic<Up>::value> = 0>
89 for(
auto litr = std::begin(_lhs); litr !=
std::end(_lhs); ++litr)
91 auto ritr = _rhs.find(litr->first);
94 divide(litr->second, ritr->second);
98template <
typename Tp,
typename Up,
typename Kp =
typename Tp::key_type,
99 typename Mp =
typename Tp::mapped_type,
102divide(Tp& _lhs,
const Up& _rhs,
type_list<>,
int) ->
decltype(std::begin(_lhs), void())
106 for(
auto litr = std::begin(_lhs); litr !=
std::end(_lhs); ++litr)
108 divide(litr->second, _rhs);
112template <
typename Tp,
typename Up>
117template <
typename Tp,
typename Up,
size_t... Idx,
121 ->
decltype(std::get<0>(_lhs), void())
127template <
typename Tp,
typename Up,
size_t... Idx,
131 ->
decltype(std::get<0>(_lhs), void())
137template <typename Tp, typename Up, enable_if_t<!concepts::is_null_type<Tp>::value>>
auto divide(Tp &_lhs, Up _rhs, type_list<>,...) -> decltype(_lhs/=_rhs, void())
auto resize(T &,...) -> void
constexpr auto get_size(const Tp &, std::tuple<>) -> size_t
typename std::enable_if< B, T >::type enable_if_t
Alias template for enable_if.
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(...)