[Bug libstdc++/103191] New: vector<bool> doesn't have any checks enabled by _GLIBCXX_ASSERTIONS
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 11 14:04:20 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103191
Bug ID: 103191
Summary: vector<bool> doesn't have any checks enabled by
_GLIBCXX_ASSERTIONS
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
We should consider this change:
diff --git a/libstdc++-v3/include/bits/stl_bvector.h
b/libstdc++-v3/include/bits/stl_bvector.h
index 1425877a5ea..32e22f5a056 100644
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -1057,12 +1057,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
reference
operator[](size_type __n)
- { return begin()[__n]; }
+ {
+ __glibcxx_requires_subscript(__n);
+ return begin()[__n];
+ }
_GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
const_reference
operator[](size_type __n) const
- { return begin()[__n]; }
+ {
+ __glibcxx_requires_subscript(__n);
+ return begin()[__n];
+ }
protected:
_GLIBCXX20_CONSTEXPR
@@ -1106,22 +1112,34 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
reference
front()
- { return *begin(); }
+ {
+ __glibcxx_requires_nonempty();
+ return *begin();
+ }
_GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
const_reference
front() const
- { return *begin(); }
+ {
+ __glibcxx_requires_nonempty();
+ return *begin();
+ }
_GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
reference
back()
- { return *(end() - 1); }
+ {
+ __glibcxx_requires_nonempty();
+ return *(end() - 1);
+ }
_GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
const_reference
back() const
- { return *(end() - 1); }
+ {
+ __glibcxx_requires_nonempty();
+ return *(end() - 1);
+ }
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 464. Suggestion for new member functions in standard containers.
More information about the Gcc-bugs
mailing list