From ad1c18704de974e49b68d4b7c397cbd773b17553 Mon Sep 17 00:00:00 2001 From: Anuradha Dissanayake Date: Mon, 27 Mar 2017 00:16:26 +1300 Subject: [PATCH] Disambiguate fmt logging methods that are using variadic templates. As variadic template arguments can be zero length, we need to specify that at least one fmt argument is provided, to distinguish these methods from the existing trivial method that takes no fmt arguments. Without this, static analysers such as ReSharper flag the logging calls as errors. --- include/spdlog/details/logger_impl.h | 38 +++++++++++++--------------- include/spdlog/logger.h | 12 ++++----- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/include/spdlog/details/logger_impl.h b/include/spdlog/details/logger_impl.h index 2b27f105..5bb85f67 100644 --- a/include/spdlog/details/logger_impl.h +++ b/include/spdlog/details/logger_impl.h @@ -121,44 +121,42 @@ inline void spdlog::logger::log(level::level_enum lvl, const T& msg) } -template -inline void spdlog::logger::trace(const char* fmt, const Args&... args) +template +inline void spdlog::logger::trace(const char* fmt, const Arg1 &arg1, const Args&... args) { - log(level::trace, fmt, args...); + log(level::trace, fmt, arg1, args...); } -template -inline void spdlog::logger::debug(const char* fmt, const Args&... args) +template +inline void spdlog::logger::debug(const char* fmt, const Arg1 &arg1, const Args&... args) { - log(level::debug, fmt, args...); + log(level::debug, fmt, arg1, args...); } -template -inline void spdlog::logger::info(const char* fmt, const Args&... args) +template +inline void spdlog::logger::info(const char* fmt, const Arg1 &arg1, const Args&... args) { - log(level::info, fmt, args...); + log(level::info, fmt, arg1, args...); } - -template -inline void spdlog::logger::warn(const char* fmt, const Args&... args) +template +inline void spdlog::logger::warn(const char* fmt, const Arg1 &arg1, const Args&... args) { - log(level::warn, fmt, args...); + log(level::warn, fmt, arg1, args...); } -template -inline void spdlog::logger::error(const char* fmt, const Args&... args) +template +inline void spdlog::logger::error(const char* fmt, const Arg1 &arg1, const Args&... args) { - log(level::err, fmt, args...); + log(level::err, fmt, arg1, args...); } -template -inline void spdlog::logger::critical(const char* fmt, const Args&... args) +template +inline void spdlog::logger::critical(const char* fmt, const Arg1 &arg1, const Args&... args) { - log(level::critical, fmt, args...); + log(level::critical, fmt, arg1, args...); } - template inline void spdlog::logger::trace(const T& msg) { diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index a2deb51d..a6d3022c 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -37,12 +37,12 @@ public: template void log(level::level_enum lvl, const char* fmt, const Args&... args); template void log(level::level_enum lvl, const char* msg); - template void trace(const char* fmt, const Args&... args); - template void debug(const char* fmt, const Args&... args); - template void info(const char* fmt, const Args&... args); - template void warn(const char* fmt, const Args&... args); - template void error(const char* fmt, const Args&... args); - template void critical(const char* fmt, const Args&... args); + template void trace(const char* fmt, const Arg1&, const Args&... args); + template void debug(const char* fmt, const Arg1&, const Args&... args); + template void info(const char* fmt, const Arg1&, const Args&... args); + template void warn(const char* fmt, const Arg1&, const Args&... args); + template void error(const char* fmt, const Arg1&, const Args&... args); + template void critical(const char* fmt, const Arg1&, const Args&... args); template void log(level::level_enum lvl, const T&); template void trace(const T&);