Код: Выделить всё
runtime_error( const std::string& what_arg ); // (1)
runtime_error( const char* what_arg ); // (2)
runtime_error( const runtime_error& other ); // (3)
Если бы тип параметра был std::string, это не только позволило бы избежать дополнительной операции копирования, но также было бы noException; к такому выводу я недавно пришел:
Если функция, отмеченная как noException, имеет параметр типа, который может вызвать исключение во время его создания, то даже если исключение гарантированно будет выброшено, это не приведет к завершению работы программы из-за исключения.
Это подтверждается тестовой программой.
Итак, почему список параметров конструктора исключений стандартной библиотеки не использует std::string? Или мое понимание и вывод, как и тестовая программа, неверны даже при неопределенном поведении?
Подробнее здесь: https://stackoverflow.com/questions/793 ... rd-library
Мобильная версия