41template <
typename Tp,
typename Up>
49template <
typename Tp,
typename Up,
typename Vp =
typename Tp::value_type>
52 ->
decltype((std::begin(_lhs), std::begin(_rhs)),
void())
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,
71 ->
decltype(std::begin(_lhs), void())
75 for(
decltype(_n) i = 0; i < _n; ++i)
77 auto litr = std::begin(_lhs) + i;
82template <
typename Tp,
typename Up,
typename Kp =
typename Tp::key_type,
83 typename Mp =
typename Tp::mapped_type,
90 for(
auto litr = std::begin(_lhs); litr !=
std::end(_lhs); ++litr)
92 auto ritr = _rhs.find(litr->first);
95 multiply(litr->second, ritr->second);
99template <
typename Tp,
typename Up,
typename Kp =
typename Tp::key_type,
100 typename Mp =
typename Tp::mapped_type,
107 for(
auto litr = std::begin(_lhs); litr !=
std::end(_lhs); ++litr)
113template <
typename Tp,
typename Up>
118template <
typename Tp,
typename Up,
size_t... Idx,
122 ->
decltype(std::get<0>(_lhs), void())
128template <
typename Tp,
typename Up,
size_t... Idx,
132 ->
decltype(std::get<0>(_lhs), void())
138template <typename Tp, typename Up, enable_if_t<!concepts::is_null_type<Tp>::value>>
Tp & multiply(Tp &, const Up &)
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(...)