Начиная с С++ 11 заголовки <regex> определяют функции std::regex_match, std::regex_search и std::regex_replace в §28.11. Я думаю, что есть веская причина для того, чтобы эти функции не были noexcept, но я не мог найти никакой ссылки о том, что они могут бросить или почему.
- Какие типы исключений могут вызывать эти функции?
- Какие условия выполнения приводят к выбросам этих исключений?
- Соответствует ли стандарт, что для некоторых наборов аргументов эти функции никогда не бросаются, например. гарантирует, что
regex_match(anyString, regex("."))никогда не выбрасывает?
- Соответствует ли стандарт, что для некоторых наборов аргументов эти функции никогда не бросаются, например. гарантирует, что
PS: Поскольку некоторые из этих исключений, вероятно, наследуются от std::runtime_error, они могут бросать std::bad_alloc во время их построения.