Я хотел бы держать поток в переменной-члене некоторого класса.Следующий фрагмент кода показывает, чего я хотел бы достичь:
#include <iostream>
#include <thread>
#include <vector>
class Test {
public:
std::thread& t;
Test(std::thread&& rt) : t(rt) {}
};
int main()
{
std::vector<Test> tests;
{
std::thread t ([]{
std::cout << 1;
});
tests.push_back(Test(std::move(t)));
}
for(Test mytest : tests)
{
mytest.t.join();
}
}
Код будет разбит в строке join ().Ошибка:
terminate called without an active exception
Aborted (core dumped)
Почему я не могу вызвать поток через mytest.t, когда оставлена область создания исходного потока?