table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::source_location::function_name(3) | C++ Standard Libary | std::source_location::function_name(3) | 
NAME¶
std::source_location::function_name - std::source_location::function_name
Synopsis¶
constexpr const char* function_name() const noexcept; (since C++20)
  
   Returns the name of the function associated with the position represented by
    this
  
   object, if any.
Parameters¶
(none)
Return value¶
 If this object represents a position in a body of a function,
    returns 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::current())
  
   {
  
   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)
| 2024.06.10 | http://cppreference.com |