51template <
typename RetType,
typename LhsType,
typename RhsType>
64 static_assert(std::is_same<ret_value_type, lhs_value_type>::value,
65 "Value types of RetType and LhsType are different!");
67 static_assert(std::is_same<lhs_value_type, rhs_value_type>::value,
68 "Value types of LhsType and RhsType are different!");
73 ret.set_is_running(
false);
74 ret.set_is_on_stack(
false);
75 ret.set_is_transient(lhs.get_is_transient() && rhs.get_is_transient());
76 ret.laps =
std::min(lhs.laps, rhs.laps);
77 ret.value = (lhs.value + rhs.value);
78 ret.accum = (lhs.accum + rhs.accum);
82 template <
typename Func,
typename... Args>
84 const Func& func, Args&&... args)
86 RetType ret(std::forward<Args>(args)...);
87 ret.set_is_running(
false);
88 ret.set_is_on_stack(
false);
89 ret.set_is_transient(lhs.get_is_transient() && rhs.get_is_transient());
90 ret.laps =
std::min(lhs.laps, rhs.laps);
91 ret.value = func(lhs.value, rhs.value);
92 ret.accum = func(lhs.accum, rhs.accum);
::tim::statistics< Tp > min(::tim::statistics< Tp > lhs, const Tp &rhs)
The declaration for the types for operations without definitions.
Include the macros for operations.
Declare the operations types.
The purpose of this operation class is operating on two components to compose a result,...
typename RhsType::value_type rhs_value_type
typename LhsType::value_type lhs_value_type
typename RetType::base_type ret_base_type
TIMEMORY_DELETED_OBJECT(compose) static_assert(std
typename RhsType::base_type rhs_base_type
static RetType generate(const lhs_base_type &lhs, const rhs_base_type &rhs)
static RetType generate(const lhs_base_type &lhs, const rhs_base_type &rhs, const Func &func, Args &&... args)
typename RetType::value_type ret_value_type
typename LhsType::base_type lhs_base_type