Skip to content

Commit

Permalink
Don't Require Floating Point from_chars() Function
Browse files Browse the repository at this point in the history
This commit broadens the scope of commit 2ad332e0b (PR #922) to
apply to all compilers/libraries, not just Clang/libc++, which do
not have support for floating-point types in std::from_chars().
While hopefully a transient situation, this enables building the
parameter system with GCC versions prior to GCC 11.  We expect to
require version 11 in the not too distant future, though.  At that
point we should revert this commit.

We use a configure-time feature test of the compiler (CMake command
'try_compile') to detect whether or not the compiler supports
floating-point overloads of std::from_chars() and emit the result to
config.h as the new preprocessor symbol

    HAVE_FLOATING_POINT_FROM_CHARS

We use std::strtod() as the fall-back alternative for floating point
conversion if this symbol is defined to false (zero).
  • Loading branch information
bska authored and akva2 committed Sep 3, 2024
1 parent e3a16df commit a26b981
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions cmake/test/testFloatFromChars.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// CMake feature test for floating-point std::from_chars() support

#include <charconv>
#include <string_view>

int main()
{
const auto s = std::string_view { "2.71828" };
auto e = 0.0;
std::from_chars(s.data(), s.data() + s.size(), e);
}

0 comments on commit a26b981

Please sign in to comment.