3 ms·
const char& c = a.front(); Unfortunately the STL has an overload for the non-const version, which would cause this problem. It's hard to imagine the cases wher
by zelly 7y ago
const char& c = a.front();
Unfortunately the STL has an overload for the non-const version, which would cause this problem. It's hard to imagine the cases where you'd need a mutable reference to a single character. It can fit into the same register that the reference would live, so even as an immutable reference it doesn't make much sense.
- kccqzy 7y agoThat's not an answer. The STL has to have a non-const version that returns some kind of reference. Because C++ strings are mutable and even something like s[3] = 'h'; involves forming a mutable reference and then assigning its pointee. The way I think about it, to make CoW strings really usable in C++, you basically have to make strings immutable, like many newer languages like Python. That ship has sailed by the time standardization for C++ happened.