This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.
Section: 23.4.3.4 [string.iterators] Status: C++11 Submitter: Jonathan Wakely Opened: 2009-08-14 Last modified: 2016-01-28
Priority: Not Prioritized
View all issues with C++11 status.
Discussion:
Unlike the containers in clause 23, basic_string has definitions for begin() and end(), but these have not been updated to include cbegin, cend, crbegin and crend.
[ 2009-10-28 Howard: ]
Moved to Tentatively NAD after 5 positive votes on c++std-lib. Added rationale.
[ 2009-10-28 Alisdair disagrees: ]
I'm going to have to speak up as the dissenting voice.
I agree the issue could be handled editorially, and that would be my preference if Pete feels this is appropriate. Failing that, I really think this issue should be accepted and moved to ready. The other begin/end functions all have a semantic definition for this template, and it is confusing if a small few are missing.
I agree that an alternative would be to strike all the definitions for begin/end/rbegin/rend and defer completely to the requirements tables in clause 23. I think that might be confusing without a forward reference though, as those tables are defined in a later clause than the basic_string template itself. If someone wants to pursue this I would support it, but recommend it as a separate issue.
So my preference is strongly to move Ready over NAD, and a stronger preference for NAD Editorial if Pete is happy to make these changes.
[ 2009-10-29 Howard: ]
Moved to Tentatively Ready after 5 positive votes on c++std-lib. Removed rationale to mark it NAD. :-)
Proposed resolution:
Add to 23.4.3.4 [string.iterators]
iterator begin(); const_iterator begin() const; const_iterator cbegin() const;...
iterator end(); const_iterator end() const; const_iterator cend() const;...
reverse_iterator rbegin(); const_reverse_iterator rbegin() const; const_reverse_iterator crbegin() const;...
reverse_iterator rend(); const_reverse_iterator rend() const; const_reverse_iterator crend() const;