First of all, any symbols (e.g. functions) starting with two underscore characters or starting with an underscore character followed by an upper case letter (as is the case here), are "reserved" names for the compiler's internal usage.
Secondly, my guess would be that the internal "helper" function _Safe_add_integer_arithmetic_overflow_error() triggers the error handler and/or sets errno, if the given arguments (in this case the arguments for _Safe_add() function) would cause and arithmetic overflow.
Also, this probably is one of those "intrinsic" functions (built-in functions) that the compiler "knows" how to generate the code for. So, the empty function definition, which you see in the header file, probably is just a "stub" to satisfy static code analyzers and the like...
How does calling this void function alert us that there would be overflow?
_Safe_add is constexpr and _Safe_add_integer_arithmetic_overflow_error is not.
In a constant-evaluated context, _Safe_add can't call _Safe_add_integer_arithmetic_overflow_error without getting a compiler error.
Here's an example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
void f() {}
constexprbool g(bool x) { if (x) f(); return x; }
template <bool> struct a{};
int main()
{
// no checking at runtime
g(false); // ok
g(true); // ok
// ...but produces a compiler error if used in a constant expression
a<g(false)> a1; // ok
a<g(true)> a2; // error: non-type template argument is not a constant expression
}