Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::source_location::current

      From cppreference.com
      <cpp‎ |utility‎ |source location
       
       
      Utilities library
       
       
      static consteval source_location current()noexcept;
      (since C++20)

      Constructs a newsource_location object corresponding to the location of the call site.

      Contents

      [edit]Parameters

      (none)

      [edit] Return value

      Ifcurrent() is invoked directly (via a function call that namescurrent()), it returns asource_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__.

      Ifcurrent() is used in adefault member initializer, the return value corresponds to the location of the constructor definition oraggregate initialization that initializes the data member.

      Ifcurrent() is used in a default argument, the return value corresponds to the location of the call tocurrent() at the call site.

      Ifcurrent() is invoked in any other manner, the return value is unspecified.

      [edit] Notes

      std::source_location::current typically requires compiler's built-in implementation.

      [edit]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::current()):        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()

      [edit]See also

      constructs a newsource_location with implementation-defined values
      (public member function)[edit]
      [static]
      obtains the current stacktrace or its given part
      (public static member function ofstd::basic_stacktrace<Allocator>)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/source_location/current&oldid=150205"

      [8]ページ先頭

      ©2009-2026 Movatter.jp