diff --git a/include/spdlog/details/mpcs_q.h b/include/spdlog/details/mpcs_q.h index d62d1775..77511db3 100644 --- a/include/spdlog/details/mpcs_q.h +++ b/include/spdlog/details/mpcs_q.h @@ -71,7 +71,7 @@ class mpsc_q public: using item_type = T; - mpsc_q(size_t max_size) : + explicit mpsc_q(size_t max_size) : _max_size(max_size), _size(0), _stub(), @@ -80,6 +80,9 @@ public: { } + mpsc_q(const mpsc_q&) = delete; + mpsc_q& operator=(const mpsc_q&) = delete; + ~mpsc_q() { clear(); @@ -116,12 +119,10 @@ public: // Empty the queue by popping all its elements void clear() { - while (mpscq_node_t* node = pop_node()) { --_size; delete(node); - } } @@ -139,6 +140,9 @@ private: T value; mpscq_node_t() :next(nullptr) {} + mpscq_node_t(const mpscq_node_t&) = delete; + mpscq_node_t& operator=(const mpscq_node_t&) = delete; + explicit mpscq_node_t(const T& value): next(nullptr), value(value) {}