#ifndef SPROUT_ALGORITHM_CLAMP_HPP #define SPROUT_ALGORITHM_CLAMP_HPP #include #include #include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT namespace sprout { // // clamp // template inline SPROUT_CONSTEXPR T const& clamp(T const& value, typename std::common_type::type const& low, typename std::common_type::type const& high, Compare comp) { return comp(value, low) ? low : comp(high, value) ? high : value ; } template inline SPROUT_CONSTEXPR T const& clamp(T const& value, typename std::common_type::type const& low, typename std::common_type::type const& high) { return sprout::clamp( value, low, high, NS_SSCRISK_CEL_OR_SPROUT::less() ); } } // namespace sprout #endif // #ifndef SPROUT_ALGORITHM_CLAMP_HPP