From 5d8b472ed72ebc2f78b5010a995ac1f7511f5be2 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Fri, 11 Feb 2022 04:03:29 +0100 Subject: [PATCH] fix(Core/Misc): Remove Clang 7 workaround (#10521) --- src/cmake/compiler/clang/settings.cmake | 7 --- src/common/Utilities/StringConvert.h | 65 ------------------------- 2 files changed, 72 deletions(-) diff --git a/src/cmake/compiler/clang/settings.cmake b/src/cmake/compiler/clang/settings.cmake index e11903b52..d53c673a9 100644 --- a/src/cmake/compiler/clang/settings.cmake +++ b/src/cmake/compiler/clang/settings.cmake @@ -46,13 +46,6 @@ int main() } " CLANG_HAVE_PROPER_CHARCONV) -if (NOT CLANG_HAVE_PROPER_CHARCONV) - message(STATUS "Clang: Detected from_chars bug for 64-bit integers, workaround enabled") - target_compile_definitions(acore-compile-option-interface - INTERFACE - -DACORE_NEED_CHARCONV_WORKAROUND) -endif() - if(WITH_WARNINGS) target_compile_options(acore-warning-interface INTERFACE diff --git a/src/common/Utilities/StringConvert.h b/src/common/Utilities/StringConvert.h index b7ee0bf3b..33c830281 100644 --- a/src/common/Utilities/StringConvert.h +++ b/src/common/Utilities/StringConvert.h @@ -90,71 +90,6 @@ namespace Acore::Impl::StringConvertImpl } }; -#ifdef ACORE_NEED_CHARCONV_WORKAROUND - /* - If this is defined, std::from_chars will cause linkage errors for 64-bit types. - (This is a bug in clang-7.) - - If the clang requirement is bumped to >= clang-8, remove this ifdef block and its - associated check in cmake/compiler/clang/settings.cmake - */ - template <> - struct For - { - static Optional FromString(std::string_view str, int base = 10) - { - if (str.empty()) - { - return std::nullopt; - } - try - { - size_t n; - uint64 val = std::stoull(std::string(str), &n, base); - if (n != str.length()) - { - return std::nullopt; - } - return val; - } - catch (...) { return std::nullopt; } - } - - static std::string ToString(uint64 val) - { - return std::to_string(val); - } - }; - - template <> - struct For - { - static Optional FromString(std::string_view str, int base = 10) - { - try - { - if (str.empty()) - { - return std::nullopt; - } - size_t n; - int64 val = std::stoll(std::string(str), &n, base); - if (n != str.length()) - { - return std::nullopt; - } - return val; - } - catch (...) { return std::nullopt; } - } - - static std::string ToString(int64 val) - { - return std::to_string(val); - } - }; -#endif - template <> struct For {