Introduce stubs for throwing specific exception types
This allows us to move <stdexcept> out of the common path, and replace it with just <exception>. The difference between these two headers is ~13k lines after preprocessing on libstdc++ (16k vs 3k) and ~17k lines for MS's STL(33k vs 16k). Note that this is only beneficial if no other stdlib header we use includes <stdexcept>. AFAIK this is true for the newest MS's STL, but I have no idea of the applicability for libstdc++ and libc++.
This commit is contained in:
parent
f0b7b0ca11
commit
1967feac49
2 changed files with 44 additions and 12 deletions
|
@ -7,6 +7,9 @@
|
|||
|
||||
#include "catch_enforce.h"
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
|
||||
namespace Catch {
|
||||
#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER)
|
||||
[[noreturn]]
|
||||
|
@ -16,4 +19,22 @@ namespace Catch {
|
|||
std::terminate();
|
||||
}
|
||||
#endif
|
||||
|
||||
[[noreturn]]
|
||||
void throw_logic_error(std::string const& msg) {
|
||||
throw_exception(std::logic_error(msg));
|
||||
}
|
||||
|
||||
[[noreturn]]
|
||||
void throw_domain_error(std::string const& msg) {
|
||||
throw_exception(std::domain_error(msg));
|
||||
}
|
||||
|
||||
[[noreturn]]
|
||||
void throw_runtime_error(std::string const& msg) {
|
||||
throw_exception(std::runtime_error(msg));
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // namespace Catch;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue