lg2: workaround clang-tidy's lack of source_location

clang/clang-tidy do not currently support C++20 source_location,
which causes repositories attempting to use lg2 but with clang-tidy
enabled to fail with lots of missing-type errors.  Workaround this
by detecting the situation and falling back to use
std::experimental::source_location.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Idb5a555243568c394505890035423d39e9b22407
diff --git a/lib/lg2_logger.cpp b/lib/lg2_logger.cpp
index fd3921c..c8a0d7f 100644
--- a/lib/lg2_logger.cpp
+++ b/lib/lg2_logger.cpp
@@ -125,13 +125,13 @@
 static constexpr size_t static_locs = pos_func + 1;
 
 /** No-op output of a message. */
-static void noop_extra_output(level, const std::source_location&,
+static void noop_extra_output(level, const lg2::source_location&,
                               const std::string&)
 {
 }
 
 /** std::cerr output of a message. */
-static void cerr_extra_output(level l, const std::source_location& s,
+static void cerr_extra_output(level l, const lg2::source_location& s,
                               const std::string& m)
 {
     std::cerr << s.file_name() << ":" << s.line() << ":" << s.function_name()
@@ -143,7 +143,7 @@
     isatty(fileno(stderr)) ? cerr_extra_output : noop_extra_output;
 
 // Do_log implementation.
-void do_log(level l, const std::source_location& s, const char* m, ...)
+void do_log(level l, const lg2::source_location& s, const char* m, ...)
 {
     using namespace std::string_literals;