
21 Jul
2009
21 Jul
'09
1:54 p.m.
Sebastian Redl skrev:
Phil Endecott wrote:
Is c_str() allowed to be > O(1) ? Yes. In particular, this implementation is valid:
template <...> class basic_string { Ch *real_data; mutable Ch *cstr_data; // ...
public: const Ch *c_str() const { if (!cstr_data) { cstr_data = allocate(size() + 1); copy(cstr_data, size()); cstr_data[size()] = 0; } return cstr_data; }
void any_modifying_function() { if(cstr_data) { deallocate(cstr_data); cstr_data = 0; } } };
But does *any* implementation actually do that? The problem is AFAIK that str[size] is valid when str is a const object. -Thorsten