@@ -442,12 +442,16 @@ template <typename U> struct binary_format_lookup_tables<double, U> {
442442 constant_55555 * 5 * 5 * 5 * 5 )};
443443};
444444
445+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
446+
445447template <typename U>
446448constexpr double binary_format_lookup_tables<double , U>::powers_of_ten[];
447449
448450template <typename U>
449451constexpr uint64_t binary_format_lookup_tables<double , U>::max_mantissa[];
450452
453+ #endif
454+
451455template <typename U> struct binary_format_lookup_tables <float , U> {
452456 static constexpr float powers_of_ten[] = {1e0f, 1e1f, 1e2f, 1e3f, 1e4f, 1e5f,
453457 1e6f, 1e7f, 1e8f, 1e9f, 1e10f};
@@ -469,12 +473,16 @@ template <typename U> struct binary_format_lookup_tables<float, U> {
469473 0x1000000 / (constant_55555 * constant_55555 * 5 )};
470474};
471475
476+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
477+
472478template <typename U>
473479constexpr float binary_format_lookup_tables<float , U>::powers_of_ten[];
474480
475481template <typename U>
476482constexpr uint64_t binary_format_lookup_tables<float , U>::max_mantissa[];
477483
484+ #endif
485+
478486template <>
479487inline constexpr int binary_format<double >::min_exponent_fast_path() {
480488#if (FLT_EVAL_METHOD != 1) && (FLT_EVAL_METHOD != 0)
@@ -677,8 +685,12 @@ template <typename = void> struct space_lut {
677685 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 };
678686};
679687
688+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
689+
680690template <typename T> constexpr bool space_lut<T>::value[];
681691
692+ #endif
693+
682694inline constexpr bool is_space (uint8_t c) { return space_lut<>::value[c]; }
683695#endif
684696
@@ -759,12 +771,16 @@ template <typename = void> struct int_luts {
759771 3379220508056640625 , 4738381338321616896 };
760772};
761773
774+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
775+
762776template <typename T> constexpr uint8_t int_luts<T>::chdigit[];
763777
764778template <typename T> constexpr size_t int_luts<T>::maxdigits_u64[];
765779
766780template <typename T> constexpr uint64_t int_luts<T>::min_safe_u64[];
767781
782+ #endif
783+
768784template <typename UC>
769785fastfloat_really_inline constexpr uint8_t ch_to_digit (UC c) {
770786 return int_luts<>::chdigit[static_cast <unsigned char >(c)];
0 commit comments