Создать поток из member function, если std::mutex также является member variable

К сожалению, если попытаться сделать

#include <thread>
#include <mutex>

class A
{
public:
    void foo() noexcept
    {
        //code
    }

private:
    std::mutex m{};
};

int main()
{
    A a;
    std::thread(&A::foo, a);
}

код не соберётся. Всё из-за того, что std::mutex находится в классе. Если его убрать, то код собирается. Почему так происходит? Как мне запустить поток от мембер функции, когда у меня мьютекс находится внутри класса?


Ответы (1 шт):

Автор решения: user578475

Было

std::thread(&A::foo, a);

А надо

std::thread(&A::foo, &a);
→ Ссылка