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>).