https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111087
Bug ID: 111087
Summary: -Wnonnull issued for std::array of zero size when
under C++20
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: adam.f.badura at gmail dot com
Target Milestone: ---
At least for GCC 10.2 and 12.2, when using -std=c++20 I'm getting unexpected
-Wnonnull in the following (simplified) case:
#include <algorithm>
#include <array>
#include <string_view>
const std::array<std::string_view, 0> tags{};
bool hasTag(const char* const tag)
{
const auto result = std::lower_bound(tags.begin(), tags. End(), tag);
return result != tags.end() && result->compare(tag) == 0;
}
See it on Compiler Explorer: https://godbolt.org/z/rGenGef7n.
It seems to be associated with the 0 size of the array since as soon as I
change it to 1 (or more) the warning goes away. Same if I drop the -std=c++20
(for 12.2 - with 10.2 it will not work due to <string_view>).