2010-06-01 32 views
1

下面是使用packaged_task和futures的C++ 0x中的一個簡單程序。在編譯程序我得到錯誤:變量「的std :: packaged_task PT1」有初始值,但不完全類型C++ 0x錯誤:變量'std :: packaged_task <int> pt1'具有初始值設定項但不完整類型

方案低於

#include <future> 
#include <iostream> 

using namespace std; 


int printFn() 
{ 

    for(int i = 0; i < 100; i++) 
    { 

     cout << "thread " << i << endl; 
    } 
return 1; 
} 



int main() 
{ 

    packaged_task<int> pt1(&printFn); 

    future<int> fut = pt1.get_future(); 

    thread t(move(pt1)); 

    t.detach(); 

    int value = fut.get(); 

    return 0; 
} 
+0

我的猜測是你忘了包含。 – 2010-08-24 11:11:27

回答

2

類模板packaged_task沒有定義的一般情況。只定義了函數類型參數的部分特化。查看當前草案:

template<class> class packaged_task; // undefined 

template<class R, class... ArgsTypes> 
class packaged_task<R(ArgTypes...)> { 
    ... 
    void operator()(ArgTypes...); 
    ... 
}; 

由於您printFn函數不帶任何參數,並返回需要使用packaged_task<int()>類型的int

相關問題