- Documentation and logic fixes for various structures

This commit is contained in:
2025-12-17 12:40:10 -05:00
parent aee4e340dd
commit e7503ed92f
28 changed files with 1179 additions and 474 deletions

View File

@@ -168,6 +168,14 @@
# define FENNEC_HAS_BUILTIN_IS_ARRAY
#endif
// Inconsistent without intrinsics
#if __has_builtin(__is_bounded_array)
# define FENNEC_HAS_BUILTIN_IS_BOUNDED_ARRAY 1
# define FENNEC_BUILTIN_IS_BOUNDED_ARRAY(arg) __is_bounded_array(arg)
#else
# define FENNEC_HAS_BUILTIN_IS_BOUNDED_ARRAY
#endif
// Inconsistent without intrinsics
#if __has_builtin(__is_class)
# define FENNEC_HAS_BUILTIN_IS_CLASS 1
@@ -176,6 +184,14 @@
# define FENNEC_HAS_BUILTIN_IS_CLASS
#endif
// Inconsistent without intrinsics
#if __has_builtin(__is_scoped_enum)
# define FENNEC_HAS_BUILTIN_IS_SCOPED_ENUM 1
# define FENNEC_BUILTIN_IS_SCOPED_ENUM(arg) __is_scoped_enum(arg)
#else
# define FENNEC_HAS_BUILTIN_IS_SCOPED_ENUM
#endif
#if __has_builtin(__is_member_pointer)
# define FENNEC_HAS_BUILTIN_IS_MEMBER_POINTER 1
# define FENNEC_BUILTIN_IS_MEMBER_POINTER(arg) __is_member_pointer(arg)
@@ -211,11 +227,19 @@
// Difficult and Inconsistent without intrinsics
#if __has_builtin(__is_trivially_constructible)
# define FENNEC_HAS_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 1
# define FENNEC_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE(type) __is_trivially_constructible(type)
# define FENNEC_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE(type, ...) __is_trivially_constructible(type __VA_OPT__(,) __VA_ARGS__)
#else
# define FENNEC_HAS_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 0
#endif
// Difficult and Inconsistent without intrinsics
#if __has_builtin(__is_nothrow_constructible)
# define FENNEC_HAS_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE 1
# define FENNEC_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE(type, ...) __is_nothrow_constructible(type __VA_OPT__(,) __VA_ARGS__)
#else
# define FENNEC_HAS_BUILTIN_IS_NOTHROW_CONSTRUCTIBLE 0
#endif
// Difficult and Inconsistent without intrinsics
#if __has_builtin(__has_trivial_destructor)
# define FENNEC_HAS_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 1
@@ -235,6 +259,22 @@
# define FENNEC_HAS_BUILTIN_IS_ASSIGNABLE 0
#endif
// Difficult and Inconsistent without intrinsics
#if __has_builtin(__is_trivially_assignable)
# define FENNEC_HAS_BUILTIN_IS_TRIVIALLY_ASSIGNABLE 1
# define FENNEC_BUILTIN_IS_TRIVIALLY_ASSIGNABLE(a, b) __is_trivially_assignable(a, b)
#else
# define FENNEC_HAS_BUILTIN_IS_TRIVIALLY_ASSIGNABLE 0
#endif
// Difficult and Inconsistent without intrinsics
#if __has_builtin(__is_nothrow_assignable)
# define FENNEC_HAS_BUILTIN_IS_NOTHROW_ASSIGNABLE 1
# define FENNEC_BUILTIN_IS_NOTHROW_ASSIGNABLE(a, b) __is_nothrow_assignable(a, b)
#else
# define FENNEC_HAS_BUILTIN_IS_NOTHROW_ASSIGNABLE 0
#endif
// Inconsistent without intrinsics
#if __has_builtin(__is_trivial)
# define FENNEC_HAS_BUILTIN_IS_TRIVIAL 1

View File

@@ -249,15 +249,15 @@ template<typename TypeT> struct numeric_limits
static constexpr float_round_style rounding_style = round_indeterminate; ///< The rounding style of TypeT
// This is very poorly named and defined in the C++ Standard so these functions differ
static constexpr TypeT min() { return TypeT(); } ///< Returns the minimum finite value of TypeT
static constexpr TypeT max() { return TypeT(); } ///< Returns the maximum finite value of TypeT
static constexpr TypeT lowest() { return TypeT(); } ///< Returns the smallest positive value of TypeT
static constexpr TypeT epsilon() { return TypeT(); } ///< Returns the difference between 1.0 and the next representable value
static constexpr TypeT round_error() { return TypeT(); } ///< Returns the max rounding error of TypeT
static constexpr TypeT infinity() { return TypeT(); } ///< Returns a value of TypeT holding a positive infinity
static constexpr TypeT quiet_NaN() { return TypeT(); } ///< Returns a value of TypeT holding a quiet NaN
static constexpr TypeT signaling_NaN() { return TypeT(); } ///< Returns a value of TypeT holding a signaling NaN
static constexpr TypeT denorm_min() { return TypeT(); } ///< Returns a value of TypeT holding the smallest positive subnormal
static constexpr TypeT min() { return TypeT(); } ///< \returns the minimum finite value of TypeT
static constexpr TypeT max() { return TypeT(); } ///< \returns the maximum finite value of TypeT
static constexpr TypeT lowest() { return TypeT(); } ///< \returns the smallest positive value of TypeT
static constexpr TypeT epsilon() { return TypeT(); } ///< \returns the difference between 1.0 and the next representable value
static constexpr TypeT round_error() { return TypeT(); } ///< \returns the max rounding error of TypeT
static constexpr TypeT infinity() { return TypeT(); } ///< \returns a value of TypeT holding a positive infinity
static constexpr TypeT quiet_NaN() { return TypeT(); } ///< \returns a value of TypeT holding a quiet NaN
static constexpr TypeT signaling_NaN() { return TypeT(); } ///< \returns a value of TypeT holding a signaling NaN
static constexpr TypeT denorm_min() { return TypeT(); } ///< \returns a value of TypeT holding the smallest positive subnormal
};
// Overload definitions for basic types

File diff suppressed because it is too large Load Diff

View File

@@ -109,16 +109,16 @@
/// \copydetails fennec::remove_cv
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::add_cvr "add_cvr<TypeT>::type"<br>
/// \ref fennec::add_cvr_t "add_cvr_t<TypeT>"
/// \ref fennec::add_cvref "add_cvref<TypeT>::type"<br>
/// \ref fennec::add_cvref_t "add_cvref_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::add_cvr
/// \copydetails fennec::add_cvref
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::remove_cvr "remove_cvr<TypeT>::type"<br>
/// \ref fennec::remove_cvr_t "remove_cvr_t<TypeT>"
/// \ref fennec::remove_cvref "remove_cvref<TypeT>::type"<br>
/// \ref fennec::remove_cvref_t "remove_cvref_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::remove_cvr
/// \copydetails fennec::remove_cvref
///
/// </table>
///