12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #ifndef FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
- #define FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
- #ifdef __has_include
- #if __has_include(<version>)
- #include <version>
- #endif
- #endif
- // Testing for https://wg21.link/N3652, adopted in C++14
- #if __cpp_constexpr >= 201304
- #define FASTFLOAT_CONSTEXPR14 constexpr
- #else
- #define FASTFLOAT_CONSTEXPR14
- #endif
- #if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
- #define FASTFLOAT_HAS_BIT_CAST 1
- #else
- #define FASTFLOAT_HAS_BIT_CAST 0
- #endif
- #if defined(__cpp_lib_is_constant_evaluated) && \
- __cpp_lib_is_constant_evaluated >= 201811L
- #define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 1
- #else
- #define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 0
- #endif
- // Testing for relevant C++20 constexpr library features
- #if FASTFLOAT_HAS_IS_CONSTANT_EVALUATED && FASTFLOAT_HAS_BIT_CAST && \
- __cpp_lib_constexpr_algorithms >= 201806L /*For std::copy and std::fill*/
- #define FASTFLOAT_CONSTEXPR20 constexpr
- #define FASTFLOAT_IS_CONSTEXPR 1
- #else
- #define FASTFLOAT_CONSTEXPR20
- #define FASTFLOAT_IS_CONSTEXPR 0
- #endif
- #if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
- #define FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE 0
- #else
- #define FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE 1
- #endif
- #endif // FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
|