Home > Mobile >  std::thread in constructor referencing it's deleted copy constructor?
std::thread in constructor referencing it's deleted copy constructor?

Time:12-21

I'm having a surprising amount of trouble with a constructor I'm writing. It's something incrediably basic, but I'm having a bad day because I'm totally stumped.

class RenderThread {
public:
    RenderThread(std::thread && threadToGive) 
        : m_renderThread(threadToGive) {}

private:
    std::thread m_renderThread;
};


int test() {
    std::thread thread;
    RenderThread rt(std::move(thread));
}

My constructor is trying to call std::thread::thread(const std::thread &) which is definitely not my goal, even if it was possible. I want to move the argument threadToGive into m_renderThread, not copy it. What am I doing wrong here?

CodePudding user response:

You have to std::move() the RenderThread constructor's parameter into the constructor of the m_renderThread member:

   : m_renderThread(std::move(threadToGive)) {}
  • Related