5 #ifndef VCCC_NUMERIC_SATURATE_CAST_HPP_
6 #define VCCC_NUMERIC_SATURATE_CAST_HPP_
18 template<
typename To,
typename From,
typename Any>
19 inline constexpr To saturate_cast_impl(From x, Any, Any, std::true_type ) noexcept {
24 return static_cast<To
>(x);
28 template<
typename To,
typename From,
typename Any>
29 inline constexpr To saturate_cast_impl(From x, Any, Any, std::false_type ) noexcept {
30 return static_cast<To
>(x);
34 template<
typename To,
typename From,
typename Any>
35 inline constexpr To saturate_cast_impl(From x, std::false_type , std::true_type , Any) noexcept {
38 return static_cast<To
>(x);
42 template<
typename To,
typename From,
typename Any>
43 inline constexpr To saturate_cast_impl(From x, std::true_type , std::false_type , Any) noexcept {
48 return static_cast<To
>(x);
56 template<
typename To,
typename From, std::enable_if_t<conjunction<
58 std::is_integral<From>
61 return vccc::detail::saturate_cast_impl<To>(
63 std::is_signed<From>{},
65 vccc::bool_constant<((std::numeric_limits<To>::digits) < (std::numeric_limits<From>::digits))>{}
constexpr VCCC_INLINE_OR_STATIC detail::max_niebloid max
Definition: max.hpp:95
constexpr VCCC_INLINE_OR_STATIC detail::min_niebloid min
Definition: min.hpp:90
constexpr To saturate_cast(From x) noexcept
Definition: saturate_cast.hpp:60
std::integral_constant< bool, v > bool_constant
Definition: bool_constant.hpp:19
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35