Начиная с С++ 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
во время их построения.