Почему C ++ не определяет, когда к элементам вектора вне диапазона по умолчанию обращаются операторы []?

Я понимаю, что массивы являются примитивным классом и поэтому не имеют встроенных методов для обнаружения ошибок вне диапазона. Тем не менее, векторный класс имеет встроенную функцию .at (), которая обнаруживает эти ошибки. Используя пространства имен, любой может перегрузить символы [], чтобы они действовали как функция .at (), выдав ошибку при доступе к значению из диапазона вектора. У меня такой вопрос: почему эта функциональность не используется по умолчанию в C ++?

РЕДАКТИРОВАТЬ: Ниже приведен пример псевдокода (я полагаю - исправьте меня, если необходимо) перегрузки вектора оператора []:

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]
}

Я полагаю, что эта функция может быть записана в определяемое пользователем пространство имен и является достаточно простой в реализации. Если это правда, почему это не по умолчанию?

Ответы на вопрос(2)

Ваш ответ на вопрос