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

FreeBSD Manual Pages

  
 
  

home | help
std::source...unction_name(3) C++ Standard Libarystd::source...unction_name(3)

NAME
       std::source_location::function_name    -	   std::source_location::func-
       tion_name

Synopsis
	  constexpr const char*	function_name()	const noexcept;	 (since	C++20)

	  Returns the name of the function associated with the position	repre-
       sented by this
	  object, if any.

Parameters
	  (none)

Return value
	  If this object represents a position in a body of  a	function,  re-
       turns an
	  implementation-defined  null-terminated byte string corresponding to
       the name	of the
	  function.

	  Otherwise, an	empty string is	returned.

Example
	  std::source_location::function_name may help to obtain the names  of
       functions
	  (including the special functions) alongside with their signatures.

       // Run this code

	#include <cstdio>
	#include <utility>
	#include <source_location>

	inline void print_function_name(
	    const  std::source_location& location = std::source_location::cur-
       rent())
	{
	    std::puts(location.function_name()); // prints  the	 name  of  the
       caller
	}

	void foo(double	&&) { print_function_name(); }

	namespace bar {	void baz() { print_function_name(); } }

	template  <typename T> auto pub(T) { print_function_name(); return 42;
       }

	struct S {
	    S()	{ print_function_name(); }
	    S(int) { print_function_name(); }
	    ~S() { print_function_name(); }
	    S& operator=(S const&) { print_function_name(); return *this; }
	    S& operator=(S&&) {	print_function_name(); return *this; }
	};

	int main(int, char const* const[])
	{
	    print_function_name();
	    foo(3.14);
	    bar::baz();
	    pub(0xFULL);
	    S p;
	    S q{42};
	    p =	q;
	    p =	std::move(q);
	    [] { print_function_name();	}();
	}

Possible output:
	int main(int, const char* const*)
	void foo(double&&)
	void bar::baz()
	auto pub(T) [with T = long long	unsigned int]
	S::S()
	S::S(int)
	S& S::operator=(const S&)
	S& S::operator=(S&&)
	main(int, const	char* const*)::<lambda()>
	S::~S()
	S::~S()

See also
	  line	    return the line number represented by this object
		    (public member function)
	  column    return the column number represented by this object
		    (public member function)
	  file_name return the file name represented by	this object
		    (public member function)

http://cppreference.com		  2022.07.31	 std::source...unction_name(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::source_location::function_name&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help