¿Por qué no encadena :: data () Proporciona un carácter mutable *?

In c ++ 11 array, string yvector todos obtuvieron eldata método que:

Devuelve el puntero a la matriz subyacente que sirve como elemento de almacenamiento. El puntero es tal que el rango data(); data() + size()) siempre es un rango válido, incluso si el contenedor está vacío. Fuent]

Este método se proporciona en un mutable yconst versión para todos los contenedores aplicables, por ejemplo:

T* vector<T>::data();
const T* vector<T>::data() const;

Todos los contenedores aplicables, es decir, exceptostring cualonly proporciona laconst versió:

const char* string::data() const;

¿Lo que pasó aquí? Por quéstring se cambia, cuandochar* string::data() sería tan útil?

Respuestas a la pregunta(2)

Su respuesta a la pregunta