Ошибка компиляции std::packaged_task с gcc 4.6

Я пытаюсь запустить функцию в потоке, используя std::packaged_task

Query query; /* protobuf object */        

/* fill Query object */

std::packaged_task task([](Query& q) ->SearchResults {
    index::core::Merger merger;
    return merger.search(q);
    });

std::future ftr = task.get_future();
std::thread(std::move(task),query).detach();

Edit2: снова обновил код, чтобы исправить ошибки. и включил полное сообщение об ошибке.

g++-4.6 (в Ubuntu 10.04) не может скомпилировать код:

In file included from /usr/include/c++/4.6/memory:80:0,
              from ../src/net/QueryConnection.cpp:8:
/usr/include/c++/4.6/functional: In instantiation of ‘std::_Bind_result(Query)>’:
/usr/include/c++/4.6/thread:135:9:   instantiated from ‘std::thread::thread(_Callable&&, 
_Args&& ...) [with _Callable = std::packaged_task, _Args = 
{Query&}]’
../src/net/QueryConnection.cpp:77:36:   instantiated from here
/usr/include/c++/4.6/functional:1365:7: error: ‘std::_Bind_result<_Result, 
_Functor(_Bound_args ...)>::_Bind_result(const std::_Bind_result<_Result, 
_Functor(_Bound_args ...)>&) [with _Result = void, _Functor =   
std::packaged_task, _Bound_args = {Query}, 
std::_Bind_result<_Result, _Functor(_Bound_args ...)> = std::_Bind_result(Query)>]’ declared to take const reference, 
but implicit declaration would take non-const
Build error occurred, build is stopped

Я читал, что это может быть связано с ошибкой: gcc-mailinglist

Я новичок в C++ / С++ 11 - Что было бы хорошей рабочей альтернативой? Мне просто нужно запустить поток, который дает мне будущее, метод get()которого вызывается позже в асинхронном цикле boost::asio.

5
задан mt_ 7 June 2012 в 21:23
поделиться