9#if defined(__cpp_lib_source_location) && __cpp_lib_source_location >= 201907L && !defined(DOXYGEN)
10#include <source_location>
13 using std::source_location;
15#elif defined(__cpp_consteval)
18 struct source_location
20 [[nodiscard]]
static consteval source_location current(
const uint_least32_t _Line_ = __builtin_LINE(),
21 const uint_least32_t _Column_ = __builtin_COLUMN(),
const char*
const _File_ = __builtin_FILE(),
22#
if defined(__clang__) || defined(__EDG__)
23 const char*
const _Function_ = __builtin_FUNCTION()
25 const char*
const _Function_ = __builtin_FUNCSIG()
28 source_location _Result{};
29 _Result._Line = _Line_;
30 _Result._Column = _Column_;
31 _Result._File = _File_;
32 _Result._Function = _Function_;
36 [[nodiscard]]
constexpr source_location() noexcept = default;
38 [[nodiscard]] constexpr uint_least32_t line() const noexcept {
41 [[nodiscard]]
constexpr uint_least32_t column() const noexcept {
44 [[nodiscard]]
constexpr const char* file_name() const noexcept {
47 [[nodiscard]]
constexpr const char* function_name() const noexcept {
52 uint_least32_t _Line{};
53 uint_least32_t _Column{};
54 const char* _File =
"";
55 const char* _Function =
"";
59#error "source_location is not supported"
64 template <
typename STRINGIFIER>
65 auto stringify(STRINGIFIER& str,
const source_location& b) {
return str(b.file_name(),
'(', b.line(),
", ", b.column(),
"):"); }
Primary namespace for everything in this library.