
21 Jul
2009
21 Jul
'09
1:41 p.m.
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; } } }; Sebastian