diff --git a/CMakeLists.txt b/CMakeLists.txt index 76ecaa4f..6be510f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.9) project(fast_float VERSION 0.1.0 LANGUAGES CXX) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/README.md b/README.md index d36de849..d60cc07a 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ functions for `float` and `double` types. These functions convert ASCII strings decimal values (e.g., `1.3e10`) into binary types. We provide exact rounding (including round to even). In our experience, these `fast_float` functions are faster than any other comparable number-parsing functions. They provide a performance similar to that of the [fast_double_parser](https://github.com/lemire/fast_double_parser) but using an novel algorithm reworked from the ground up, and while offering an API more in line with the expectations of C++ programmers. -Specifically, `fast_float` provides the following two functions with a C++17-like syntax: +Specifically, `fast_float` provides the following two functions with a C++17-like syntax (the library itself only requires C++11): ```C++ from_chars_result from_chars(const char* first, const char* last, float& value, ...); diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index 4b22a9ba..bc8a4f1a 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -133,6 +133,12 @@ struct decimal { uint8_t digits[max_digits]; }; +constexpr static double powers_of_ten_double[] = { + 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, + 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22}; +constexpr static float powers_of_ten_float[] = { + 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10}; + template struct binary_format { static constexpr int mantissa_explicit_bits(); @@ -145,11 +151,6 @@ struct binary_format { static constexpr int min_exponent_round_to_even(); static constexpr uint64_t max_mantissa_fast_path(); static constexpr T exact_power_of_ten(int64_t power); - constexpr static double powers_of_ten_double[] = { - 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, - 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22}; - constexpr static float powers_of_ten_float[] = { - 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10}; }; template <>