56template <
typename Tp,
size_t N,
typename OtherT>
64template <
typename Lhs,
typename Rhs,
typename OtherT>
72template <
typename Tp,
typename... ExtraT,
typename OtherT>
73std::vector<Tp, ExtraT...>&
80template <
typename... Types,
typename OtherT>
94template <
typename Tp,
size_t N>
96operator-=(std::array<Tp, N>& lhs,
const std::array<Tp, N>& rhs)
102template <
typename Lhs,
typename Rhs>
104operator-=(std::pair<Lhs, Rhs>& lhs,
const std::pair<Lhs, Rhs>& rhs)
110template <
typename Tp,
typename... ExtraT>
111std::vector<Tp, ExtraT...>&
112operator-=(std::vector<Tp, ExtraT...>& lhs,
const std::vector<Tp, ExtraT...>& rhs)
118template <
typename... Types>
120operator-=(std::tuple<Types...>& lhs,
const std::tuple<Types...>& rhs)
132template <
typename Tp,
size_t N>
134operator*=(std::array<Tp, N>& lhs,
const std::array<Tp, N>& rhs)
140template <
typename Lhs,
typename Rhs>
142operator*=(std::pair<Lhs, Rhs>& lhs,
const std::pair<Lhs, Rhs>& rhs)
148template <
typename Tp,
typename... ExtraT>
149std::vector<Tp, ExtraT...>&
150operator*=(std::vector<Tp, ExtraT...>& lhs,
const std::vector<Tp, ExtraT...>& rhs)
156template <
typename... Types>
158operator*=(std::tuple<Types...>& lhs,
const std::tuple<Types...>& rhs)
170template <
typename Tp,
size_t N>
172operator/=(std::array<Tp, N>& lhs,
const std::array<Tp, N>& rhs)
178template <
typename Lhs,
typename Rhs>
180operator/=(std::pair<Lhs, Rhs>& lhs,
const std::pair<Lhs, Rhs>& rhs)
186template <
typename Tp,
typename... ExtraT>
187std::vector<Tp, ExtraT...>&
188operator/=(std::vector<Tp, ExtraT...>& lhs,
const std::vector<Tp, ExtraT...>& rhs)
194template <
typename... Types>
196operator/=(std::tuple<Types...>& lhs,
const std::tuple<Types...>& rhs)
208template <
typename Lhs,
size_t N,
typename Rhs,
209 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
217template <
typename Lhs,
typename Rhs,
typename ArithT,
218 enable_if_t<std::is_arithmetic<decay_t<ArithT>>::value,
int>>
226template <
typename Lhs,
typename Rhs,
typename... ExtraT,
227 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
228std::vector<Lhs, ExtraT...>&
235template <
typename... Lhs,
typename Rhs,
236 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
250template <
typename Lhs,
size_t N,
typename Rhs,
251 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
259template <
typename Lhs,
typename Rhs,
typename ArithT,
260 enable_if_t<std::is_arithmetic<decay_t<ArithT>>::value,
int>>
268template <
typename Lhs,
typename Rhs,
typename... ExtraT,
269 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
270std::vector<Lhs, ExtraT...>&
277template <
typename... Lhs,
typename Rhs,
278 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
293template <
typename Lhs,
typename Rhs,
294 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
300template <
typename Rhs, enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int> = 0>
301inline std::chrono::system_clock::time_point&
307template <
typename Lhs,
typename Rhs,
308 enable_if_t<std::is_arithmetic<decay_t<Rhs>>::value,
int>>
321template <
typename Tp,
size_t N>
323operator+(std::array<Tp, N> lhs,
const std::array<Tp, N>& rhs)
331template <
typename... Types>
333operator+(std::tuple<Types...> lhs,
const std::tuple<Types...>& rhs)
341template <
typename Lhs,
typename Rhs>
343operator+(std::pair<Lhs, Rhs> lhs,
const std::pair<Lhs, Rhs>& rhs)
351template <
typename Tp,
typename... Extra>
352std::vector<Tp, Extra...>
353operator+(std::vector<Tp, Extra...> lhs,
const std::vector<Tp, Extra...>& rhs)
365template <
typename Tp,
size_t N>
367operator-(std::array<Tp, N> lhs,
const std::array<Tp, N>& rhs)
375template <
typename... Types>
377operator-(std::tuple<Types...> lhs,
const std::tuple<Types...>& rhs)
385template <
typename Lhs,
typename Rhs>
387operator-(std::pair<Lhs, Rhs> lhs,
const std::pair<Lhs, Rhs>& rhs)
395template <
typename Tp,
typename... Extra>
396std::vector<Tp, Extra...>
397operator-(std::vector<Tp, Extra...> lhs,
const std::vector<Tp, Extra...>& rhs)
409template <
typename Tp,
size_t N>
410std::array<Tp, N>
operator*(std::array<Tp, N> lhs,
const std::array<Tp, N>& rhs)
418template <
typename... Types>
419std::tuple<Types...>
operator*(std::tuple<Types...> lhs,
const std::tuple<Types...>& rhs)
427template <
typename Lhs,
typename Rhs>
428std::pair<Lhs, Rhs>
operator*(std::pair<Lhs, Rhs> lhs,
const std::pair<Lhs, Rhs>& rhs)
436template <
typename Tp,
typename... Extra>
437std::vector<Tp, Extra...>
operator*(std::vector<Tp, Extra...> lhs,
438 const std::vector<Tp, Extra...>& rhs)
450template <
typename Tp,
size_t N>
452operator/(std::array<Tp, N> lhs,
const std::array<Tp, N>& rhs)
460template <
typename... Types>
462operator/(std::tuple<Types...> lhs,
const std::tuple<Types...>& rhs)
470template <
typename Lhs,
typename Rhs>
472operator/(std::pair<Lhs, Rhs> lhs,
const std::pair<Lhs, Rhs>& rhs)
480template <
typename Tp,
typename... Extra>
481std::vector<Tp, Extra...>
482operator/(std::vector<Tp, Extra...> lhs,
const std::vector<Tp, Extra...>& rhs)
494#if defined(TIMEMORY_WINDOWS)
496template <
typename Lhs,
typename Rhs>
498operator-(pair<Lhs, Rhs> lhs,
const pair<Lhs, Rhs>& rhs)
504template <
typename... Types>
506operator-(tuple<Types...> lhs,
const tuple<Types...>& rhs)
514template <
typename Tp>
::tim::statistics< tuple<> > & operator+=(::tim::statistics< tuple<> > &_lhs, const Tp &)
Tp operator-(const base< Tp, Value > &lhs, const base< Tp, Value > &rhs)
Tp & plus(Tp &, const Up &)
auto divide(Tp &_lhs, Up _rhs, type_list<>,...) -> decltype(_lhs/=_rhs, void())
Tp & minus(Tp &, const Up &)
Tp & multiply(Tp &, const Up &)
std::array< Tp, N > & operator+=(std::array< Tp, N > &, Other &&)
std::array< Tp, N > & operator/=(std::array< Tp, N > &, const std::array< Tp, N > &)
std::array< Tp, N > operator-(std::array< Tp, N > lhs, const std::array< Tp, N > &rhs)
Lhs operator/(Lhs, const Rhs &)
Lhs operator*(Lhs, const Rhs &)
std::array< Tp, N > & operator*=(std::array< Tp, N > &, const std::array< Tp, N > &)
std::array< Tp, N > & operator-=(std::array< Tp, N > &, const std::array< Tp, N > &)
std::array< Tp, N > operator+(std::array< Tp, N > lhs, const std::array< Tp, N > &rhs)