52template <
typename V,
typename Tag>
60 static decltype(
auto)
get(
const T& obj)
86 template <
typename T,
typename FuncT>
88 ->
decltype(obj.set_value(std::forward<FuncT>(f)(obj.get_value(), v)), void())
90 obj.set_value(std::forward<FuncT>(f)(obj.get_value(), v));
97 template <
typename FuncT>
100 obj = std::forward<FuncT>(f)(obj, v);
105 template <
typename T>
110 store(obj, std::move(_v));
115 template <
typename T,
typename FuncT>
120 store(obj, std::forward<FuncT>(f), std::move(_v));
128 template <
typename T>
131 obj.set_value(std::move(v));
135 template <
typename T,
typename FuncT>
137 ->
decltype(obj.set_value(std::forward<FuncT>(f)(obj.get_value(), std::move(v))),
140 obj.set_value(std::forward<FuncT>(f)(obj.get_value(), std::move(v)));
147 template <
typename T,
typename FuncT>
150 obj = std::forward<FuncT>(f)(obj, v);
154 template <
typename T>
157 auto&& _v = std::move(v);
159 obj.set_value(std::move(_v));
163 template <
typename T,
typename FuncT>
166 auto&& _v = std::move(v);
168 store(obj, std::forward<FuncT>(f), std::move(_v));
173 template <
typename T>
174 static auto get(
const T& obj,
int) ->
decltype(obj.get_value())
176 return obj.get_value();
179 template <
typename T>
180 static decltype(
auto)
get(
const T& obj,
long)
Tp & minus(Tp &, const Up &)
static auto store(T &obj, FuncT &&f, const value_type &v) -> decltype(obj.set_value(std::forward< FuncT >(f)(obj.get_value(), v)), void())
static void begin(value_type &obj, value_type &&v)
overload with move semantics
static auto begin(value_type &obj, FuncT &&f, value_type &&v)
overload with move semantics
static auto store(T &obj, FuncT &&f, value_type &&v) -> decltype(obj.set_value(std::forward< FuncT >(f)(obj.get_value(), std::move(v))), void())
overload with move semantics
static void end(T &obj, value_type &&v)
overload with move semantics
static void end(T &obj, FuncT &&f, value_type &&v)
overload with move semantics
static void end(T &obj, FuncT &&f, const value_type &v)
this function computes the difference between the provided value and the temporary from mark_begin an...
static decltype(auto) get_display(const T &obj)
this function is returns the current value in a form suitable for display. It may be necessary to spe...
static void end(T &obj, const value_type &v)
this function computes the difference between the provided value and the temporary from mark_begin an...
static void store(T &obj, value_type &&v)
overload with move semantics
static void begin(value_type &obj, const value_type &v)
this function sets the value of the temporary in mark_begin.
static void store(T &obj, const value_type &v)
this function is used to store a value
static decltype(auto) get(const T &obj)
this function is returns the current value
static void begin(value_type &obj, FuncT &&f, const value_type &v)
this function sets the value of the temporary in mark_begin.