//--------------------------------------------------------- // check.h //--------------------------------------------------------- #ifndef CHECK_H #define CHECK_H #include // errno #include // exit #include // strerror #include // cerr #include // source_location #include // getpid //--------------------------------------------------------- template T check(T code, int error = -1, std::source_location location = std::source_location::current()) { if ((intptr_t)code == (intptr_t)error) { std::cerr << "pid: " << getpid() << '\n' << "exe: " << location.file_name() << '\n' << "function: " << location.function_name() << '\n' << "line: " << location.line() << '\n' << "code: " << code << '\n' << "errno: " << errno << '\n' << "error: " << std::strerror(errno) << '\n'; exit(EXIT_FAILURE); } return code; } //--------------------------------------------------------- #endif // CHECK_H