- Mark the parameters of the new out-of-line throw helpers in json.hpp as
used, as JSON_THROW drops its argument with JSON_NOEXCEPTION (clang
-Wunused-parameter).
- all_children_leaves() iterates with begin()/end() via std::all_of: a
custom array_t such as the one in the custom_array_type example has no
rbegin() (examples check, clang-tidy readability-use-anyofallof).
- The rvalue to_json overloads (#5837) copy the elements of containers
with const elements such as std::set instead of moving them: GCC 4.9's
std::move_iterator cannot bind them. Object types are ruled out before
std::ranges::view is checked, which needs an incomplete ordered_json
for its object_t (GCC 11, C++20, unit-regression3 #3312).
- NOLINT the rvalue to_json parameters that are deliberately not
forwarded, and fix the other clang-tidy findings (modernize-use-auto in
zmij.hpp, readability-math-missing-parentheses in json_pointer.hpp).
- cpplint: NOLINT(readability/braces) on the new scalar fast-path macro
like on JSON_IMPLEMENT_OPERATOR, and include <map> in json.hpp.
- Tests: drop a useless cast (GCC -Wuseless-cast) and a signed/unsigned
comparison (MSVC C4018), wrap a vector<json> comparison in parentheses
so doctest does not try to print it (ambiguous operator<< on MSVC), and
also strip JSON_DIAGNOSTIC_POSITIONS' "(bytes x-y) " from the patch
messages in unit-throw_messages.
- Windows clang (MinGW): link with LLD. unit-msgpack.cpp (C++11) and
unit-regression2.cpp (C++20) have more than 32767 sections again
(33363 and 33197), which GNU ld cannot link; LLD links them.
Signed-off-by: Niels Lohmann <mail@nlohmann.me>