diff --git a/include/spdlog/common.h b/include/spdlog/common.h index f6fb0fe7..77a73b86 100644 --- a/include/spdlog/common.h +++ b/include/spdlog/common.h @@ -105,6 +105,12 @@ #endif #endif +// Add constructor to spdlog::source_loc using std::source_location +#if __cpp_lib_source_location >= 201907L + #define SPDLOG_STD_SOURCE_LOCATION + #include +#endif + #ifndef SPDLOG_FUNCTION #define SPDLOG_FUNCTION static_cast(__FUNCTION__) #endif @@ -324,6 +330,13 @@ struct source_loc { line{line_in}, funcname{funcname_in} {} + #ifdef SPDLOG_STD_SOURCE_LOCATION + SPDLOG_CONSTEXPR source_loc(const std::source_location& loc) + : filename{loc.file_name()}, + line{static_cast(loc.line())}, + funcname{loc.function_name()} {} + #endif + SPDLOG_CONSTEXPR bool empty() const SPDLOG_NOEXCEPT { return line == 0; } const char *filename{nullptr}; int line{0};