diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c1fc2e8..4d62f799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ HEAD ---- * Fixed error `'dummy' may be used uninitialized` on GCC 11 +* Fixed error `expected unqualified-id before 'const'` on GCC 11 (issue #1622) v6.18.3 (2021-07-27) ------- diff --git a/extras/tests/CMakeLists.txt b/extras/tests/CMakeLists.txt index c88d3000..2c0b3a11 100644 --- a/extras/tests/CMakeLists.txt +++ b/extras/tests/CMakeLists.txt @@ -12,6 +12,7 @@ link_libraries(ArduinoJson catch) include_directories(Helpers) add_subdirectory(Cpp11) add_subdirectory(Cpp17) +add_subdirectory(Cpp20) add_subdirectory(FailingBuilds) add_subdirectory(IntegrationTests) add_subdirectory(JsonArray) diff --git a/extras/tests/Cpp20/CMakeLists.txt b/extras/tests/Cpp20/CMakeLists.txt new file mode 100644 index 00000000..89534096 --- /dev/null +++ b/extras/tests/Cpp20/CMakeLists.txt @@ -0,0 +1,29 @@ +# ArduinoJson - https://arduinojson.org +# Copyright Benoit Blanchon 2014-2021 +# MIT License + +if(MSVC_VERSION LESS 1910) + return() +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10) + return() +endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10) + return() +endif() + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_executable(Cpp20Tests + smoke_test.cpp +) + +add_test(Cpp20 Cpp20Tests) + +set_tests_properties(Cpp20 + PROPERTIES + LABELS "Catch" +) diff --git a/extras/tests/Cpp20/smoke_test.cpp b/extras/tests/Cpp20/smoke_test.cpp new file mode 100644 index 00000000..dc41e875 --- /dev/null +++ b/extras/tests/Cpp20/smoke_test.cpp @@ -0,0 +1,15 @@ +#include + +#include +#include + +TEST_CASE("C++20 smoke test") { + StaticJsonDocument<128> doc; + + deserializeJson(doc, "{\"hello\":\"world\"}"); + REQUIRE(doc["hello"] == "world"); + + std::string json; + serializeJson(doc, json); + REQUIRE(json == "{\"hello\":\"world\"}"); +} diff --git a/src/ArduinoJson/Strings/Adapters/ArduinoStringAdapter.hpp b/src/ArduinoJson/Strings/Adapters/ArduinoStringAdapter.hpp index 5e4b6240..3d520406 100644 --- a/src/ArduinoJson/Strings/Adapters/ArduinoStringAdapter.hpp +++ b/src/ArduinoJson/Strings/Adapters/ArduinoStringAdapter.hpp @@ -45,8 +45,7 @@ class StringAdapter< ::String> { template <> class StringAdapter< ::StringSumHelper> : public StringAdapter< ::String> { public: - StringAdapter< ::StringSumHelper>(const ::String& s) - : StringAdapter< ::String>(s) {} + StringAdapter(const ::String& s) : StringAdapter< ::String>(s) {} }; } // namespace ARDUINOJSON_NAMESPACE diff --git a/src/ArduinoJson/Strings/Adapters/ConstRamStringAdapter.hpp b/src/ArduinoJson/Strings/Adapters/ConstRamStringAdapter.hpp index 1ca7c02c..b4a696e2 100644 --- a/src/ArduinoJson/Strings/Adapters/ConstRamStringAdapter.hpp +++ b/src/ArduinoJson/Strings/Adapters/ConstRamStringAdapter.hpp @@ -45,7 +45,7 @@ class StringAdapter { template class StringAdapter : public StringAdapter { public: - StringAdapter(const char* s) : StringAdapter(s) {} + StringAdapter(const char* s) : StringAdapter(s) {} }; } // namespace ARDUINOJSON_NAMESPACE