Рассмотрим из С++ 11 следующее:
[C++11: 21.4.5]:basic_stringдоступ к элементу [String.access]const_reference operator[](size_type pos) const; reference operator[](size_type pos);1 Требуется:
pos <= size().2 Возвращает:
*(begin() + pos), еслиpos < size(), в противном случае ссылка на объект типаTсо значениемcharT(); ссылочное значение не должно быть изменено.3 Броски: ничего.
4 Сложность: постоянное время.
Это означает:
- Исходное значение в случае
pos == size()не должно быть изменено или - В любом случае ссылочное значение, возвращаемое
op[], не может быть изменено даже для перегрузки неconst.
Второй сценарий кажется совершенно нелепым, но я думаю, что это наиболее выражает формулировка.
Можем ли мы изменить то, что получаем из std::string::op[], или нет? И это не довольно неоднозначная формулировка?