This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
Section: 23.3.3 [string.view.template] Status: New Submitter: Johel Ernesto Guerrero Peña Opened: 2020-06-26 Last modified: 2020-09-06
Priority: 3
View all other issues in [string.view.template].
View all issues with New status.
Discussion:
23.3.3 [string.view.template] states:
For a basic_string_view str, any operation that invalidates a pointer in the range [str.data(), str.data() + str.size()) invalidates pointers, iterators, and references returned from str's member functions.
The assignment operators return a reference to *this, but *this is not invalidated.
Previous resolution [SUPERSEDED]:
This wording is relative to N4861.
Modify 23.3.3 [string.view.template] as indicated:
-2- For a basic_string_view str, any operation that invalidates a pointer in the range [str.data(), str.data() + str.size()) invalidates pointers, iterators, and references to the elements in that range and its past-the-end iterator returned from str's member functions.
[2020-06-29; Casey comments and provides alternative proposed wording]
I think we should additionally strike "returned from str's member functions" from the end of the sentence. Provenance shouldn't affect invalidation; ranges::next(some_string_view.begin(), 42), for example, returns an iterator that denotes an element of some_string_view, but is not a member function of basic_string_view.
[2020-07-05; Reflector prioritization]
Set priority to 3 after reflector discussions.
Proposed resolution:
This wording is relative to N4861.
Modify 23.3.3 [string.view.template] as indicated:
-2- For a basic_string_view str, any operation that invalidates a pointer in the range [str.data(), str.data() + str.size()) invalidates pointers, iterators, and references to the elements in that range and its past-the-end iterator
returned from str's member functions.