Annotate noexcept and constexpr with HEDLEY, and add interval containment, ChaCha, and the dyadic range tables.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ryan Henry 2026-09-24 20:44:07 -06:00
parent 875f09fec1
commit 0d8a5a8131
97 changed files with 9212 additions and 1159 deletions

View file

@ -44,8 +44,11 @@ struct wildcard_value
static_assert(std::numeric_limits<T>::is_iec559 ||
!(std::is_same_v<T, float> || std::is_same_v<T, double>),
"floating point types only supported for iec559");
HEDLEY_NO_THROW
inline constexpr wildcard_value() noexcept : val{std::nullopt} { }
HEDLEY_NO_THROW
inline constexpr wildcard_value(const T & t) noexcept : val{t} { }
HEDLEY_NO_THROW
inline constexpr wildcard_value(T && t) noexcept : val{std::move(t)} { }
HEDLEY_ALWAYS_INLINE
@ -93,6 +96,7 @@ template <typename T> using concrete_type_t = typename concrete_type<T>::type;
template <typename T> struct concrete_value
{
HEDLEY_NO_THROW
HEDLEY_ALWAYS_INLINE
HEDLEY_CONST
constexpr std::optional<T> operator()(T y) const noexcept
@ -102,6 +106,7 @@ template <typename T> struct concrete_value
};
template <typename T> struct concrete_value<wildcard_value<T>>
{
HEDLEY_NO_THROW
HEDLEY_ALWAYS_INLINE
HEDLEY_CONST
constexpr std::optional<T> operator()(wildcard_value<T>) const noexcept