basic_string
missing definitions for cbegin
/ cend
/ crbegin
/ crend
Section: 27.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 thebasic_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 27.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;