boost::move
От: Аноним  
Дата: 11.06.11 11:01
Оценка:
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 Объясните, пожалуйста, на пальцах
Re: boost::move
От: TarasKo Голландия  
Дата: 13.06.11 14:31
Оценка:
А что именно не понятно?
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);


А вот так скомпилируется и вызовется перемещающий оператор присваивания
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.