5 #ifndef VCCC_ALGORITHM_RANGES_CLAMP_HPP_
6 #define VCCC_ALGORITHM_RANGES_CLAMP_HPP_
22 struct clamp_niebloid {
23 template<
typename T,
typename Proj = identity,
typename Comp = ranges::less, std::enable_if_t<conjunction<
24 projectable<const T*, Proj>,
25 indirect_strict_weak_order<Comp, projected<const T*, Proj>>
27 constexpr
const T& operator()(
const T& v,
const T& lo,
const T& hi, Comp comp = {}, Proj proj = {})
const {
constexpr VCCC_INLINE_OR_STATIC detail::clamp_niebloid clamp
clamps a value between a pair of boundary values
Definition: clamp.hpp:59
constexpr invoke_result_t< F, Args... > invoke(F &&f, Args &&... args) noexcept(is_nothrow_invocable< F, Args... >::value)
Definition: invoke.hpp:38
#define VCCC_INLINE_OR_STATIC
Definition: inline_or_static.hpp:9
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35