Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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)

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>

home | help