Предположим, что вы пишете функцию, которая принимает std::initializer_list
под названием list
и что для функции требуется произвольный доступ к элементам list
. Было бы удобно писать list[i]
вместо list.begin()[i]
. Итак, почему std::initializer_list
не предоставляет определение operator[]
?
Я не могу думать о каких-либо случаях, когда возвращаемый const T&
const T&
не был бы корректно определен. Эффективность здесь, похоже, не проблема, так как std::initializer_list<T>::iterator
имеет псевдоним const T*
, который явно является итератором с произвольным доступом.