> -----Original Message----- > From: Martin Sebor [mailto:[EMAIL PROTECTED] On Behalf Of Martin Sebor > Sent: Friday, June 13, 2008 7:12 PM > To: [email protected] > 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() (21.3.8.8), operator>>() (21.3.8.9), and getline() (21.3.8.9). - 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. Farid.
