mirror of
https://github.com/nlohmann/json.git
synced 2026-10-25 23:38:58 +00:00
Declare no_key_compare_map's accessors noexcept
The GCC C++20 job builds with -Wnoexcept and -Werror, and the standard
library takes noexcept(c.begin()) and noexcept(c.end()) in ranges_base.h and
range_access.h. Forwarding to std::map without repeating its noexcept made
those expressions false, which the warning reports as an error:
error: noexcept-expression evaluates to 'false' because of a call to
no_key_compare_map<...>::begin() [-Werror=noexcept]
note: but ... does not throw; perhaps it should be declared 'noexcept'
Give the accessors the exception specification of what they forward to.
std::map declares begin, end, cbegin, cend, empty, size, max_size, and clear
noexcept, so the wrapper does too. swap is left alone: std::map's is only
conditionally noexcept, and nothing asks for it.
void_erase_map is unaffected because it still derives from std::map and
inherits accessors that already carry the specification.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018hxZxz8svM54c6ATEvXp5E
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
1 parent
b38c4cc937
commit
207db0f124
1 file changed
+10
-10
@@ -59,44 +59,44 @@ class no_key_compare_map
|
|||||||
template<class InputIt>
|
template<class InputIt>
|
||||||
no_key_compare_map(InputIt first, InputIt last) : data(first, last) {}
|
no_key_compare_map(InputIt first, InputIt last) : data(first, last) {}
|
||||||
|
|
||||||
iterator begin()
|
iterator begin() noexcept
|
||||||
{
|
{
|
||||||
return data.begin();
|
return data.begin();
|
||||||
}
|
}
|
||||||
iterator end()
|
iterator end() noexcept
|
||||||
{
|
{
|
||||||
return data.end();
|
return data.end();
|
||||||
}
|
}
|
||||||
const_iterator begin() const
|
const_iterator begin() const noexcept
|
||||||
{
|
{
|
||||||
return data.begin();
|
return data.begin();
|
||||||
}
|
}
|
||||||
const_iterator end() const
|
const_iterator end() const noexcept
|
||||||
{
|
{
|
||||||
return data.end();
|
return data.end();
|
||||||
}
|
}
|
||||||
const_iterator cbegin() const
|
const_iterator cbegin() const noexcept
|
||||||
{
|
{
|
||||||
return data.cbegin();
|
return data.cbegin();
|
||||||
}
|
}
|
||||||
const_iterator cend() const
|
const_iterator cend() const noexcept
|
||||||
{
|
{
|
||||||
return data.cend();
|
return data.cend();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool empty() const
|
bool empty() const noexcept
|
||||||
{
|
{
|
||||||
return data.empty();
|
return data.empty();
|
||||||
}
|
}
|
||||||
size_type size() const
|
size_type size() const noexcept
|
||||||
{
|
{
|
||||||
return data.size();
|
return data.size();
|
||||||
}
|
}
|
||||||
size_type max_size() const
|
size_type max_size() const noexcept
|
||||||
{
|
{
|
||||||
return data.max_size();
|
return data.max_size();
|
||||||
}
|
}
|
||||||
void clear()
|
void clear() noexcept
|
||||||
{
|
{
|
||||||
data.clear();
|
data.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user