boost::thread create_thread()
{
void some_function();
boost::thread t(some_function);
return boost::move(t);
}
boost::thread threads[45];
threads[12]=boost::move(create_thread());
Никак не могу врубится в moveable
Объясните, пожалуйста, на пальцах
А что именно не понятно?
boost::move не пользовался, пользовался std::move.
move конвертирует ссылку на lvalue в rvalue.
Например у boost::thread отсутствует копирующий оператор присваивания, но есть перемещающий оператор присваивания.
boost::thread& operator=(const boost::thread&) = delete; \\ 1
boost::thread& operator=(boost::thread&&); \\ 2
есть вот такой код
boost::thread thr1(&thr_func);
boost::thread thr2;
thr2 = thr1;
Этот код не скомпилируется из-за попытки вызвать копирующий оператор присваивания.
boost::thread thr1(&thr_func);
boost::thread thr2;
thr2 = std::move(thr1);
А вот так скомпилируется и вызовется перемещающий оператор присваивания