diff --git a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp index 2c3158e4cd..c390d4e3e2 100644 --- a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp +++ b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp @@ -81,9 +81,12 @@ std::future BoostThreadWorker::call_on_main_thread(std::function } BoostThreadWorker::BoostThreadWorker(std::shared_ptr pri, - boost::thread::attributes &attribs, - const char * name) - : m_progress(std::move(pri)), m_input_queue{m_running}, m_output_queue{m_running}, m_name{name} + boost::thread::attributes &attribs, + const char *name) + : m_progress(std::move(pri)) + , m_input_queue{m_running} + , m_output_queue{m_running} + , m_name{name} { if (m_progress) m_progress->set_cancel_callback([this](){ cancel(); }); diff --git a/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp b/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp index 823ad9adfe..a8d38cf771 100644 --- a/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp +++ b/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp @@ -69,7 +69,7 @@ class BoostThreadWorker : public Worker, private Job::Ctl template class RawQueue: public std::deque { - std::atomic *m_running_ptr = nullptr; + std::atomic *m_running_ptr; public: using std::deque::deque; diff --git a/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp b/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp index df1779c06f..05c14f9cdc 100644 --- a/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp +++ b/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp @@ -21,6 +21,10 @@ struct BlockingWait unsigned timeout_ms = 0; }; +template +using NonSpecialMembersOnly = std::enable_if_t< + (sizeof...(Args) >= 1) && !(... || std::is_convertible_v)>; + // A thread safe queue for one producer and one consumer. template class Container = std::deque, @@ -32,10 +36,11 @@ class ThreadSafeQueueSPSC std::condition_variable m_cond_var; public: - template + template> ThreadSafeQueueSPSC(Qargs &&...qargs) : m_queue{Container{std::forward(qargs)...}} {} + ThreadSafeQueueSPSC() = default; ThreadSafeQueueSPSC(const ThreadSafeQueueSPSC&) = default; ThreadSafeQueueSPSC(ThreadSafeQueueSPSC&&) = default; ThreadSafeQueueSPSC& operator=(const ThreadSafeQueueSPSC&) = default;