diff --git a/README.md b/README.md index 6e13bfdc33..c4d9f733b8 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ json empty_object_implicit = json({}); json empty_object_explicit = json::object(); // a way to express an _array_ of key/value pairs [["currency", "USD"], ["value", 42.99]] -json array_not_object = { json::array({"currency", "USD"}), json::array({"value", 42.99}) }; +json array_not_object = json::array({ {"currency", "USD"}, {"value", 42.99} }); ``` diff --git a/src/json.hpp b/src/json.hpp index 23d420547d..e0466b6856 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -3646,12 +3646,12 @@ class iter_impl public: - /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. - /// The C++ Standard has never required user-defined iterators to derive from std::iterator. - /// A user-defined iterator should provide publicly accessible typedefs named - /// iterator_category, value_type, difference_type, pointer, and reference. - /// Note that value_type is required to be non-const, even for constant iterators. - using iterator_category = std::bidirectional_iterator_tag; + /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. + /// The C++ Standard has never required user-defined iterators to derive from std::iterator. + /// A user-defined iterator should provide publicly accessible typedefs named + /// iterator_category, value_type, difference_type, pointer, and reference. + /// Note that value_type is required to be non-const, even for constant iterators. + using iterator_category = std::bidirectional_iterator_tag; /// the type of the values when the iterator is dereferenced using value_type = typename BasicJsonType::value_type; diff --git a/test/src/unit-readme.cpp b/test/src/unit-readme.cpp index bc1597751f..1ce6ee1dcf 100644 --- a/test/src/unit-readme.cpp +++ b/test/src/unit-readme.cpp @@ -100,13 +100,20 @@ TEST_CASE("README", "[hide]") { // ways to express the empty array [] json empty_array_implicit = {{}}; + CHECK(empty_array_implicit.is_array()); json empty_array_explicit = json::array(); + CHECK(empty_array_explicit.is_array()); // a way to express the empty object {} json empty_object_explicit = json::object(); + CHECK(empty_object_explicit.is_object()); // a way to express an _array_ of key/value pairs [["currency", "USD"], ["value", 42.99]] - json array_not_object = { json::array({"currency", "USD"}), json::array({"value", 42.99}) }; + json array_not_object = json::array({ {"currency", "USD"}, {"value", 42.99} }); + CHECK(array_not_object.is_array()); + CHECK(array_not_object.size() == 2); + CHECK(array_not_object[0].is_array()); + CHECK(array_not_object[1].is_array()); } {