diff --git a/include/nlohmann/detail/input/json_sax.hpp b/include/nlohmann/detail/input/json_sax.hpp index 90583d671..405d3612f 100644 --- a/include/nlohmann/detail/input/json_sax.hpp +++ b/include/nlohmann/detail/input/json_sax.hpp @@ -353,7 +353,7 @@ class json_sax_dom_callback_parser using parse_event_t = typename BasicJsonType::parse_event_t; json_sax_dom_callback_parser(BasicJsonType& r, - const parser_callback_t cb, + const parser_callback_t& cb, const bool allow_exceptions_ = true) : root(r), callback(cb), allow_exceptions(allow_exceptions_) { diff --git a/include/nlohmann/detail/input/parser.hpp b/include/nlohmann/detail/input/parser.hpp index bdf85ba29..0dd884a8b 100644 --- a/include/nlohmann/detail/input/parser.hpp +++ b/include/nlohmann/detail/input/parser.hpp @@ -69,7 +69,7 @@ class parser public: /// a parser reading from an input adapter explicit parser(InputAdapterType&& adapter, - const parser_callback_t cb = nullptr, + const parser_callback_t& cb = nullptr, const bool allow_exceptions_ = true, const bool skip_comments = false) : callback(cb) diff --git a/include/nlohmann/detail/output/output_adapters.hpp b/include/nlohmann/detail/output/output_adapters.hpp index 626f7c0c8..4583ca00c 100644 --- a/include/nlohmann/detail/output/output_adapters.hpp +++ b/include/nlohmann/detail/output/output_adapters.hpp @@ -31,7 +31,7 @@ template struct output_adapter_protocol { virtual void write_character(CharType c) = 0; virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; + virtual ~output_adapter_protocol(); output_adapter_protocol() = default; output_adapter_protocol(const output_adapter_protocol&) = default; @@ -40,6 +40,10 @@ template struct output_adapter_protocol output_adapter_protocol& operator=(output_adapter_protocol&&) noexcept = default; }; +// explicitly default the destructor to fix portability-template-virtual-member-function +template +output_adapter_protocol::~output_adapter_protocol() = default; + /// a type to simplify interfaces template using output_adapter_t = std::shared_ptr>; diff --git a/include/nlohmann/json.hpp b/include/nlohmann/json.hpp index ec208f916..cb362b3b5 100644 --- a/include/nlohmann/json.hpp +++ b/include/nlohmann/json.hpp @@ -2424,7 +2424,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec template < class IteratorType, detail::enable_if_t < std::is_same::value || std::is_same::value, int > = 0 > - IteratorType erase(IteratorType pos) + IteratorType erase(IteratorType pos) // NOLINT(performance-unnecessary-value-param) { // make sure iterator fits the current value if (JSON_HEDLEY_UNLIKELY(this != pos.m_object)) @@ -4011,7 +4011,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec template JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json parse(InputType&& i, - const parser_callback_t cb = nullptr, + const parser_callback_t& cb = nullptr, const bool allow_exceptions = true, const bool ignore_comments = false) { @@ -4026,7 +4026,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json parse(IteratorType first, IteratorType last, - const parser_callback_t cb = nullptr, + const parser_callback_t& cb = nullptr, const bool allow_exceptions = true, const bool ignore_comments = false) { diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index c6900dd37..5cfb985b7 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -7037,7 +7037,7 @@ class json_sax_dom_callback_parser using parse_event_t = typename BasicJsonType::parse_event_t; json_sax_dom_callback_parser(BasicJsonType& r, - const parser_callback_t cb, + const parser_callback_t& cb, const bool allow_exceptions_ = true) : root(r), callback(cb), allow_exceptions(allow_exceptions_) { @@ -12283,7 +12283,7 @@ class parser public: /// a parser reading from an input adapter explicit parser(InputAdapterType&& adapter, - const parser_callback_t cb = nullptr, + const parser_callback_t& cb = nullptr, const bool allow_exceptions_ = true, const bool skip_comments = false) : callback(cb) @@ -14991,7 +14991,7 @@ template struct output_adapter_protocol { virtual void write_character(CharType c) = 0; virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; + virtual ~output_adapter_protocol(); output_adapter_protocol() = default; output_adapter_protocol(const output_adapter_protocol&) = default; @@ -15000,6 +15000,10 @@ template struct output_adapter_protocol output_adapter_protocol& operator=(output_adapter_protocol&&) noexcept = default; }; +// explicitly default the destructor to fix portability-template-virtual-member-function +template +output_adapter_protocol::~output_adapter_protocol() = default; + /// a type to simplify interfaces template using output_adapter_t = std::shared_ptr>; @@ -21772,7 +21776,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec template < class IteratorType, detail::enable_if_t < std::is_same::value || std::is_same::value, int > = 0 > - IteratorType erase(IteratorType pos) + IteratorType erase(IteratorType pos) // NOLINT(performance-unnecessary-value-param) { // make sure iterator fits the current value if (JSON_HEDLEY_UNLIKELY(this != pos.m_object)) @@ -23359,7 +23363,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec template JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json parse(InputType&& i, - const parser_callback_t cb = nullptr, + const parser_callback_t& cb = nullptr, const bool allow_exceptions = true, const bool ignore_comments = false) { @@ -23374,7 +23378,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json parse(IteratorType first, IteratorType last, - const parser_callback_t cb = nullptr, + const parser_callback_t& cb = nullptr, const bool allow_exceptions = true, const bool ignore_comments = false) { diff --git a/tests/src/unit-alt-string.cpp b/tests/src/unit-alt-string.cpp index 1d39e8db1..118d243d4 100644 --- a/tests/src/unit-alt-string.cpp +++ b/tests/src/unit-alt-string.cpp @@ -16,8 +16,8 @@ /* forward declarations */ class alt_string; -bool operator<(const char* op1, const alt_string& op2) noexcept; -void int_to_string(alt_string& target, std::size_t value); +bool operator<(const char* op1, const alt_string& op2) noexcept; // NOLINT(misc-use-internal-linkage) +void int_to_string(alt_string& target, std::size_t value); // NOLINT(misc-use-internal-linkage) /* * This is virtually a string class.