mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-07 01:06:48 +08:00
Address warnings of this form under c++17 when building with `-Werror -Wdeprecated`:
```
fast_float/float_common.h:446:58: error: out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated [-Werror,-Wdeprecated]
constexpr double binary_format_lookup_tables<double, U>::powers_of_ten[];
^
```
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#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
|