C ++, Linux: ошибка: запрошено преобразование из «boost :: unique_future » в нескалярный тип «boost :: shared_future ». как это обойти?

Я пытаюсь работать с фьючерсами потоков boost . Итак, как показано ] здесь мы можем получить общее будущее из упакованной задачи .

Я пробую такую ​​функцию в linux:

template 
void pool_item( boost::shared_ptr< boost::packaged_task > pt)
{
    boost::shared_future fi= pt->get_future(); // error
    //...

, но при ее вызове получаю ошибку:

../../src/cf-util/thread_pool.h: In member function ‘void thread_pool::pool_item(boost::shared_ptr >) [with task_return_t = void]’:
../../src/cf-util/thread_pool.h:64:3:   instantiated from ‘void thread_pool::post(boost::shared_ptr >) [with task_return_t = void]’
../../src/cf-server/server.cpp:39:27:   instantiated from here
../../src/cf-util/thread_pool.h:124:58: error: conversion from ‘boost::unique_future’ to non-scalar type ‘boost::shared_future’ requested

Раньше я не брал фьючерсов из этой задачи. весь исходный код , место, куда я звоню из , мой пул потоков, который вызывается . Windows под управлением Visual Studio 2010 компилируется и отлично работает.

Что мне делать? Как исправить или обойти эту ошибку?

5
задан Nathan Kleyn 8 November 2011 в 04:15
поделиться