std::vector::at
выдает std::out_of_range
, если запрошенное значение находится вне диапазона контейнера.
Для конструктора std::out_of_range
требуется строка, к которой можно получить доступ через .what()
при перехватеисключение.
Но я никогда не видел ничего написанного о том, что на самом деле должно быть в этом сообщении.Это может быть полезно знать, по крайней мере, по двум причинам:
- Я могу захотеть показать это сообщение пользователю, например, при запуске с включенными параметрами отладки.Тогда полезно знать, есть ли какие-либо ограничения на длину, язык, набор символов и т. Д.
- Я мог бы захотеть использовать
std::out_of_range
в своем собственном классе, если он достаточно похож на стандартный контейнер,и вернуть сообщение, соответствующее формату, используемому в стандартной библиотеке.
Это определено в стандарте?Если нет, то определяется ли , а не ?