144#error "UGMISC_DOCS must be defined for documenting, not compiling."
158#define UGMISC_PREDEFS_HEADER "quoted_header_name"
160#ifdef UGMISC_PREDEFS_HEADER
161# include UGMISC_PREDEFS_HEADER
171#if __cplusplus >= 202002L
172# define UGMISC_CXX_20 __cplusplus
177#if __cplusplus < 201703L
178# error "features.hpp doesn't bother to work with less than C++17."
190#define UGMISC_HAVE_VERSION
193# if __has_include(<version>)
196#elif defined(UGMISC_HAVE_VERSION)
201# define UGMISC_HAS_INCLUDE_OR_IGNORE(...) __has_include(__VA_ARGS__)
203# define UGMISC_HAS_INCLUDE_OR_IGNORE(...)
209#ifndef UGMISC_FEATURE_TRUE
217#define UGMISC_FEATURE_TRUE true
218#define UGMISC_FEATURE_FALSE false
277# define UGMISC_HAVE_CONSTEXPR_DESTRUCTORS
284# define UGMISC_NO_CONSTEXPR_DESTRUCTORS
300#if defined(UGMISC_HAVE_CONSTEXPR_DESTRUCTORS) && defined(UGMISC_NO_CONSTEXPR_DESTRUCTORS)
301# error "Predefines include HAVE_CONSTEXPR_DESTRUCTORS and NO_CONSTEXPR_DESCTRUCTORS."
303#if !defined(UGMISC_HAVE_CONSTEXPR_DESTRUCTORS) && !defined(UGMISC_NO_CONSTEXPR_DESTRUCTORS)
305# define UGMISC_HAVE_CONSTEXPR_DESCTRUCTORS
307# undef UGMISC_HAVE_CONSTEXPR_DESTRUCTORS
310#ifdef UGMISC_HAVE_CONSTEXPR_DESTRUCTORS
324# define UGMISC_HAVE_CONSTEVAL
327# define UGMISC_HAVE_CONSTEVAL
330# undef UGMISC_HAVE_CONSTEVAL
344# define UGMISC_HAVE_CONSTEVAL_IF
350#if __cpp_consteval >= 202211L
351# define UGMISC_HAVE_CONSTEVAL_IF
352 static constexpr bool consteval_if = UGMISC_FEATURE_TRUE;
354# undef UGMISC_HAVE_CONSTEVAL_IF
373# define UGMISC_HAVE_BIT_CAST
381#if __cpp_lib_bit_cast
382# define UGMISC_HAVE_BIT_CAST
383 static constexpr bool bit_cast = UGMISC_FEATURE_TRUE;
385# undef UGMISC_HAVE_BIT_CAST
386 static constexpr bool bit_cast = UGMISC_FEATURE_FALSE;
397#define UGMISC_HAVE_BITOPS
400# define UGMISC_HAVE_BITOPS
401 static constexpr bool bitops = UGMISC_FEATURE_TRUE;
403# undef UGMISC_HAVE_BITOPS
408 static constexpr bool bitops = UGMISC_FEATURE_FALSE;
419# define UGMISC_HAVE_CONSTEXPR_SWAP_ALGORITHMS
421#if __cpp_lib_constexpr_swap_algorithms
422# define UGMISC_HAVE_CONSTEXPR_SWAP_ALGORITHMS
425# undef UGMISC_HAVE_CONSTEXPR_SWAP_ALGORITHMS
Definition features.hpp:261
static constexpr bool bit_cast
Definition features.hpp:386
static constexpr bool consteval_if
Definition features.hpp:355
static constexpr bool constexpr_destructors
Definition features.hpp:311
static constexpr bool bitops
Definition features.hpp:408
static constexpr bool consteval_functions
Definition features.hpp:335
static constexpr bool constexpr_swap_algorithms
Definition features.hpp:430