¿Por qué C ++ no detecta cuándo se accede a los elementos vectoriales fuera de rango con los operadores [] de forma predeterminada?

Entiendo que las matrices son una clase primitiva y, por lo tanto, no tienen métodos integrados para detectar errores fuera de rango. Sin embargo, la clase de vector tiene la función incorporada .at () que detecta estos errores. Al usar espacios de nombres, cualquiera puede sobrecargar los símbolos [] para que actúen como la función .at () arrojando un error cuando se accede a un valor fuera del rango del vector. Mi pregunta es esta: ¿por qué esta funcionalidad no es predeterminada en C ++?

EDITAR: A continuación se muestra un ejemplo en pseudocódigo (creo - corríjame si es necesario) de sobrecargar el operador de vector []:

Item_Type& operator[](size_t index) { // Verify that the index is legal.
if (index < 0 || index >= num_items) {
   throw std::out_of_range
     ("index to operator[] is out of range");
}
 return the_data[index]
}

Creo que esta función puede escribirse en un espacio de nombres definido por el usuario y es razonablemente fácil de implementar. Si esto es cierto, ¿por qué no es predeterminado?

Respuestas a la pregunta(2)

Su respuesta a la pregunta