FreeBSD Manual Pages
std::source...ion::current(3) C++ Standard Libarystd::source...ion::current(3) NAME std::source_location::current - std::source_location::current Synopsis static consteval source_location current() noexcept; (since C++20) Constructs a new source_location object corresponding to the loca- tion of the call site. Parameters (none) Return value If current() is invoked directly (via a function call that names current()), it returns a source_location object with implementation-defined values representing the location of the call. The values should be affected by the #line preprocessor directive in the same manner as the predefined macros __LINE__ and __FILE__. If current() is used in a default member initializer, the return value corresponds to the location of the constructor definition or aggregate initial- ization that initializes the data member. If current() is used in a default argument, the return value corre- sponds to the location of the call to current() at the call site. If current() is invoked in any other manner, the return value is un- specified. Notes std::source_location::current typically requires compiler's built-in implementation. Example // Run this code #include <source_location> #include <iostream> struct src_rec { std::source_location srcl = std::source_location::current(); int dummy = 0; src_rec(std::source_location loc = std::source_location::cur- rent()) : srcl(loc) // values of member refer to the location of the calling function {} src_rec(int i) : // values of member refer to this location dummy(i) {} src_rec(double) // values of member refer to this location {} }; std::source_location src_clone(std::source_location a = std::source_location::current()) { return a; } std::source_location src_make() { std::source_location b = std::source_location::current(); return b; } int main() { src_rec srec0; src_rec srec1(0); src_rec srec2(0.0); auto s0 = std::source_location::current(); auto s1 = src_clone(s0); auto s2 = src_clone(); auto s3 = src_make(); std::cout << srec0.srcl.line() << ' ' << srec0.srcl.function_name() << '\n' << srec1.srcl.line() << ' ' << srec1.srcl.function_name() << '\n' << srec2.srcl.line() << ' ' << srec2.srcl.function_name() << '\n' << s0.line() << ' ' << s0.function_name() << '\n' << s1.line() << ' ' << s1.function_name() << '\n' << s2.line() << ' ' << s2.function_name() << '\n' << s3.line() << ' ' << s3.function_name() << '\n'; } Possible output: 31 int main() 12 src_rec::src_rec(int) 15 src_rec::src_rec(double) 34 int main() 34 int main() 36 int main() 25 std::source_location src_make() See also constructor constructs a new source_location with implementa- tion-defined values (public member function) current obtains the current stacktrace or its given part [static] (C++23) (public static member function of std::basic_stack- trace<Allocator>) http://cppreference.com 2022.07.31 std::source...ion::current(3)
NAME | Synopsis | Parameters | Return value | Notes | Example | Possible output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::source_location::current&sektion=3&manpath=FreeBSD+Ports+15.0>
