From ef111ddba2f341e62523f9839b7f35e0e78556a7 Mon Sep 17 00:00:00 2001 From: gabime Date: Tue, 10 Jul 2018 20:20:55 +0300 Subject: [PATCH] Fix issue #736 --- include/spdlog/details/pattern_formatter.h | 4 ++-- include/spdlog/details/thread_pool.h | 28 +++++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/include/spdlog/details/pattern_formatter.h b/include/spdlog/details/pattern_formatter.h index 3ede105b..e2e3c60c 100644 --- a/include/spdlog/details/pattern_formatter.h +++ b/include/spdlog/details/pattern_formatter.h @@ -549,8 +549,8 @@ public: compile_pattern_(pattern); } - pattern_formatter(const pattern_formatter &) = default; - pattern_formatter &operator=(const pattern_formatter &) = default; + pattern_formatter(const pattern_formatter &) = delete; + pattern_formatter &operator=(const pattern_formatter &) = delete; void format(const details::log_msg &msg, fmt::memory_buffer &dest) override { #ifndef SPDLOG_NO_DATETIME diff --git a/include/spdlog/details/thread_pool.h b/include/spdlog/details/thread_pool.h index cec47c60..5f0e8b95 100644 --- a/include/spdlog/details/thread_pool.h +++ b/include/spdlog/details/thread_pool.h @@ -39,8 +39,32 @@ struct async_msg // should only be moved in or out of the queue.. async_msg(const async_msg &) = delete; +#if defined(_MSC_VER) && _MSC_VER <= 1800 // support for vs2013 move + async_msg(async_msg &&other) SPDLOG_NOEXCEPT : msg_type(other.msg_type), + level(other.level), + time(other.time), + thread_id(other.thread_id), + raw(move(other.raw)), + msg_id(other.msg_id), + worker_ptr(std::move(other.worker_ptr)) + { + } + + async_msg &operator=(async_msg &&other) SPDLOG_NOEXCEPT + { + msg_type = other.msg_type; + level = other.level; + time = other.time; + thread_id = other.thread_id; + raw = std::move(other.raw); + msg_id = other.msg_id; + worker_ptr = std::move(other.worker_ptr); + return *this; + } +#else async_msg(async_msg &&other) = default; async_msg &operator=(async_msg &&other) = default; +#endif // construct from log_msg with given type async_msg(async_logger_ptr &&worker, async_msg_type the_type, details::log_msg &&m) @@ -149,7 +173,9 @@ private: void worker_loop_() { - while (process_next_msg_()) {}; + while (process_next_msg_()) + { + }; } // process next message in the queue