update boost

This commit is contained in:
2023-11-24 12:56:13 -06:00
parent cfc99971af
commit 19d727037a
9260 changed files with 849256 additions and 299957 deletions

View File

@@ -21,8 +21,19 @@ namespace checked {
////////////////////////////////////////////////////
// layer 0 - implement safe operations for floating
template<typename R, typename T>
struct heterogeneous_checked_operation<R, T, F,
template<
typename R,
R Min,
R Max,
typename T,
class F
>
struct heterogeneous_checked_operation<
R,
Min,
Max,
T,
F,
typename std::enable_if<
std::is_floating_point<R>::value
&& std::is_floating_point<T>::value
@@ -34,20 +45,53 @@ struct heterogeneous_checked_operation<R, T, F,
};
}; // checked_unary_operation
template<
typename R,
R Min,
R Max,
typename T,
class
F
>
struct heterogeneous_checked_operation<
R,
Min,
Max,
T,
F,
typename std::enable_if<
std::is_floating_point<R>::value
&& std::is_integralt<T>::value
>::type
>{
constexpr static checked_result<R>
cast(const T & t) noexcept {
return t;
};
}; // checked_unary_operation
template<typename R, typename T, typename U>
struct checked_operation<R, T, U, F,
typename std::enable_if<
std::is_floating_point<R>::value
>::type
>{
constexpr static checked_result<R> add(const T & t, const U & u) noexcept {
constexpr static checked_result<R> cast(const T & t) {
return
cast_impl_detail::cast_impl(
t,
std::is_signed<R>(),
std::is_signed<T>()
);
}
constexpr static checked_result<R> add(const T & t, const U & u) {
return t + u;
}
constexpr static checked_result<R> subtract(
const T & t,
const U & u
) noexcept {
) {
return t - u;
}
@@ -85,6 +129,7 @@ struct checked_operation<R, T, U, F,
}
}; // checked_binary_operation
template<class R, class T, class U>
typename std::enable_if<
std::is_floating_point<R>::value
@@ -92,7 +137,7 @@ typename std::enable_if<
&& std::is_floating_point<U>::value,
checked_result<R>
>::type
constexpr bool less_than(const T & t, const U & u) noexcept {
constexpr inline bool less_than(const T & t, const U & u) noexcept {
return t < u;
}
@@ -103,7 +148,7 @@ typename std::enable_if<
&& std::is_floating_point<U>::value,
checked_result<R>
>::type
constexpr bool equal(const T & t, const U & u) noexcept {
constexpr inline bool equal(const T & t, const U & u) noexcept {
return t < u;
}
@@ -114,7 +159,7 @@ typename std::enable_if<
&& std::is_floating_point<U>::value,
checked_result<R>
>::type
constexpr checked_result<R> left_shift(const T & t, const U & u) noexcept {
constexpr inline checked_result<R> left_shift(const T & t, const U & u) noexcept {
return t << u;
}
@@ -125,7 +170,7 @@ typename std::enable_if<
&& std::is_floating_point<U>::value,
checked_result<R>
>::type
constexpr checked_result<R> right_shift(const T & t, const U & u) noexcept {
constexpr inline checked_result<R> right_shift(const T & t, const U & u) noexcept {
return t >> u;
}
@@ -136,7 +181,7 @@ typename std::enable_if<
&& std::is_floating_point<U>::value,
checked_result<R>
>::type
constexpr checked_result<R> bitwise_or(const T & t, const U & u) noexcept {
constexpr inline checked_result<R> bitwise_or(const T & t, const U & u) noexcept {
return t | u;
}
@@ -147,7 +192,7 @@ typename std::enable_if<
&& std::is_floating_point<U>::value,
checked_result<R>
>::type
constexpr checked_result<R> bitwise_xor(const T & t, const U & u) noexcept {
constexpr inline checked_result<R> bitwise_xor(const T & t, const U & u) noexcept {
return t ^ u;
}
@@ -158,7 +203,7 @@ typename std::enable_if<
&& std::is_floating_point<U>::value,
checked_result<R>
>::type
constexpr checked_result<R> bitwise_and(const T & t, const U & u) noexcept {
constexpr inline checked_result<R> bitwise_and(const T & t, const U & u) noexcept {
return t & u;
}