stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Farid Zaripov" <>
Subject RE: string cow bug ([Fwd: Fwd: Update: string COW])
Date Fri, 13 Jun 2008 17:03:25 GMT
> -----Original Message-----
> From: Martin Sebor [] On Behalf Of Martin Sebor
> Sent: Friday, June 13, 2008 7:12 PM
> To:
> Subject: string cow bug ([Fwd: Fwd: Update: string COW])
> ...attached is a test case I got from a fellow attendee of my 
> meeting for what at first blush looks like a COW bug in 
> stdcxx string. The expected output on line 4 is:
> 2. cc1: 'H'

21.3.1 p4:
4 References, pointers, and iterators referring to the elements of a
basic_string sequence may be invalidated by the
following uses of that basic_string object:
- As an argument to non-member functions swap() (, operator>>()
(, and getline() (
- As an argument to basic_string::swap().
- Calling data() and c_str() member functions.
- Calling non-const member functions, except operator[], at, begin,
rbegin, end, and rend.
- Following construction or any of the above uses, except the forms of
insert and erase that return iterators, the
first call to non-const member functions operator[], at, begin, rbegin,
end, or rend.

  The first call on non-const operator[] for s1 object located in "s1[0]
= 'H';" line. So after that line any references to the
elements are invalidated and cc1 should not be used after that line.


View raw message