diff options
author | swarmer <swarmer@yandex-team.com> | 2024-10-04 21:38:04 +0300 |
---|---|---|
committer | swarmer <swarmer@yandex-team.com> | 2024-10-04 21:48:00 +0300 |
commit | 2e23880a876e477acc0b4a853dbe585ea3807aba (patch) | |
tree | a26a13fb1c7ed1c29c33faa86d83c50781492acc | |
parent | 09d8f48ef2d0a92817d00bb9c8bc3ac795256ded (diff) | |
download | ydb-2e23880a876e477acc0b4a853dbe585ea3807aba.tar.gz |
check lifetime bound of TString const iterators
ex:
```
auto it = TString{"temporary"}.cbegin();
use(*it);
```
commit_hash:68f621e7b2d608340d7b9f5a9a246c138a2eafff
-rw-r--r-- | util/generic/string.h | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/util/generic/string.h b/util/generic/string.h index 5fe507200d..b73c73e625 100644 --- a/util/generic/string.h +++ b/util/generic/string.h @@ -325,14 +325,36 @@ public: return reverse_iterator(begin()); } - using TBase::begin; //!< const_iterator TStringBase::begin() const - using TBase::cbegin; //!< const_iterator TStringBase::cbegin() const - using TBase::cend; //!< const_iterator TStringBase::cend() const - using TBase::crbegin; //!< const_reverse_iterator TStringBase::crbegin() const - using TBase::crend; //!< const_reverse_iterator TStringBase::crend() const - using TBase::end; //!< const_iterator TStringBase::end() const - using TBase::rbegin; //!< const_reverse_iterator TStringBase::rbegin() const - using TBase::rend; //!< const_reverse_iterator TStringBase::rend() const + const_iterator begin() const noexcept Y_LIFETIME_BOUND { + return TBase::begin(); + } + const_iterator cbegin() const noexcept Y_LIFETIME_BOUND { + return TBase::cbegin(); + } + + const_iterator cend() const noexcept Y_LIFETIME_BOUND { + return TBase::cend(); + } + + const_reverse_iterator crbegin() const noexcept Y_LIFETIME_BOUND { + return TBase::crbegin(); + } + + const_reverse_iterator crend() const noexcept Y_LIFETIME_BOUND { + return TBase::crend(); + } + + const_iterator end() const noexcept Y_LIFETIME_BOUND { + return TBase::end(); + } + + const_reverse_iterator rbegin() const noexcept Y_LIFETIME_BOUND { + return TBase::rbegin(); + } + + const_reverse_iterator rend() const noexcept Y_LIFETIME_BOUND { + return TBase::rend(); + } inline size_t capacity() const noexcept { #ifdef TSTRING_IS_STD_STRING |