https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80780
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- The default argument case is: source_location f(source_location a = source_location::current()) { return a; } int main() { auto loc = f(); // f's first argument corresponds to this line of code VERIFY( loc.line() == 8 ); // where line 8 is the line above VERIFY( loc.column() == 16 ); // assuming you use the closing paren of f() VERIFY( !__builtin_strcmp(loc.file_name(),__FILE__) ); VERIFY( !__builtin_strcmp(loc.function_name(), __FUNCTION__) ); }