FreeBSD Manual Pages
std::source...rce_location(3) C++ Standard Libarystd::source...rce_location(3) NAME std::source_location::source_location - std::source_loca- tion::source_location Synopsis constexpr source_location() noexcept; (1) (since C++20) source_location( const source_location& other ); (2) (since C++20) source_location( source_location&& other ) noexcept; (3) (since C++20) 1) Constructs a source_location object of unspecified value. 2-3) Copy and move constructors. It is unspecified whether they are trivial and/or constexpr. Parameters other - another source_location to copy or move from Example // Run this code #include <iomanip> #include <iostream> #include <ranges> #include <vector> #include <source_location> #include <string_view> // GCC specific type name printer #if (__GNUG__ >= 11) template <typename T> auto type_name_helper(const std::source_location s = std::source_loca- tion::current()) { using std::operator""sv; const std::string_view fun_name{s.function_name()}; constexpr auto prefix {"[with T = "sv}; const auto type_name_begin {fun_name.find(prefix)}; if (""sv.npos == type_name_begin) return ""sv; const std::size_t first {type_name_begin + prefix.length()}; return std::string_view{fun_name.cbegin() + first, fun_name.cend() - 1}; } template <typename T> auto type_name() { return type_name_helper<T>(); } #endif void print(std::string_view const comment, std::source_location const l) { std::cout << comment << ":\n" << " file_name : " << std::quoted(l.file_name()) << '\n' << " function_name : " << std::quoted(l.function_name()) << '\n' << " line : " << l.line() << '\n' << " column : " << l.column() << '\n'; } int main() { constexpr std::source_location default_constructed; print("default constructed", default_constructed); constexpr std::source_location current = std::source_loca- tion::current(); print("current", current); # if (__GNUG__ >= 11) const std::vector<std::vector<int>> v{ {1,2}, {3,4,5}, {6} }; auto jv = std::ranges::join_view(v); std::cout << '\n' << '[' << type_name<int>() << "]\n" << '[' << type_name<double*>() << "]\n" << '[' << type_name<decltype([](){})>() << "]\n" << '[' << type_name<decltype(type_name<int>())>() << "]\n" << '[' << type_name<decltype(jv)>() << "]\n" ; # endif } Possible output: default constructed: file_name : "" function_name : "" line : 0 column : 0 current: file_name : "main.cpp" function_name : "int main()" line : 39 column : 75 [int] [double*] [main()::<lambda()>] [std::basic_string_view<char>] [std::ranges::join_view<std::ranges::ref_view<const std::vec- tor<std::vector<int> > > >] See also current constructs a new source_location corresponding to the location of the [static] call site (public static member function) constructor constructs a new stacktrace_entry (C++23) (public member function of std::stacktrace_entry) http://cppreference.com 2022.07.31 std::source...rce_location(3)
NAME | Synopsis | Parameters | 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::source_location&sektion=3&manpath=FreeBSD+Ports+15.0>
