From 518bcdeeba984eb4b8811fcd0136f8fc6e994e4f Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Thu, 8 Oct 2020 09:53:03 +0200 Subject: [PATCH] Add fix for std::from_chars not working on Linux --- .../exoplanets/tasks/exoplanetsdatapreparationtask.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/exoplanets/tasks/exoplanetsdatapreparationtask.cpp b/modules/exoplanets/tasks/exoplanetsdatapreparationtask.cpp index d0309573b3..828f7b6ee7 100644 --- a/modules/exoplanets/tasks/exoplanetsdatapreparationtask.cpp +++ b/modules/exoplanets/tasks/exoplanetsdatapreparationtask.cpp @@ -111,21 +111,31 @@ void ExoplanetsDataPreparationTask::perform(const Task::ProgressCallback& progre LINFO(fmt::format("Loading {} exoplanets", total)); auto readFloatData = [](const std::string& str) -> float { + #ifdef WIN32 float result; auto [p, ec] = std::from_chars(str.data(), str.data() + str.size(), result); if (ec == std::errc()) { return result; } return NAN; + #else + // clang is missing float support for std::from_chars + return !str.empty() ? std::stof(str.c_str(), nullptr) : NAN; + #endif }; auto readDoubleData = [](const std::string& str) -> double { + #ifdef WIN32 double result; auto [p, ec] = std::from_chars(str.data(), str.data() + str.size(), result); if (ec == std::errc()) { return result; } return NAN; + #else + // clang is missing double support for std::from_chars + return !str.empty() ? std::stod(str.c_str(), nullptr) : NAN; + #endif }; auto readIntegerData = [](const std::string& str) -> int {