فهرست منبع

Fix 'std::string_view' has not been declared (issue #1967)

Benoit Blanchon 2 سال پیش
والد
کامیت
49e2a8d421
3فایلهای تغییر یافته به همراه16 افزوده شده و 3 حذف شده
  1. 1 0
      CHANGELOG.md
  2. 11 3
      extras/tests/Cpp17/string_view.cpp
  3. 4 0
      src/ArduinoJson/Variant/ConverterImpl.hpp

+ 1 - 0
CHANGELOG.md

@@ -5,6 +5,7 @@ HEAD
 ----
 
 * Fix error `'std::string' has not been declared` (issue #1967)
+* Fix error `'std::string_view' has not been declared` (issue #1967)
 
 v6.21.3 (2023-07-23)
 -------

+ 11 - 3
extras/tests/Cpp17/string_view.cpp

@@ -1,8 +1,16 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright © 2014-2023, Benoit BLANCHON
+// MIT License
+
+// we expect ArduinoJson.h to include <string_view>
+// but we don't want it to included accidentally
+#undef ARDUINO
+#define ARDUINOJSON_ENABLE_STD_STREAM 0
+#define ARDUINOJSON_ENABLE_STD_STRING 0
+
 #include <ArduinoJson.h>
 #include <catch.hpp>
 
-#include <string_view>
-
 #if !ARDUINOJSON_ENABLE_STRING_VIEW
 #  error ARDUINOJSON_ENABLE_STRING_VIEW must be set to 1
 #endif
@@ -19,7 +27,7 @@ TEST_CASE("string_view") {
 
   SECTION("JsonDocument::set()") {
     doc.set(std::string_view("123", 2));
-    REQUIRE(doc.as<std::string>() == "12");
+    REQUIRE(doc.as<std::string_view>() == "12");
   }
 
   SECTION("JsonDocument::operator[]() const") {

+ 4 - 0
src/ArduinoJson/Variant/ConverterImpl.hpp

@@ -12,6 +12,10 @@
 #  include <string>
 #endif
 
+#if ARDUINOJSON_ENABLE_STRING_VIEW
+#  include <string_view>
+#endif
+
 ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
 
 template <typename T, typename Enable>