2010-06-01 2 views
1

다음은 package_task 및 future를 사용하는 간단한 프로그램입니다. 내가 오류 얻을 프로그램을 컴파일하는 동안 : 변수 '표준 : 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

내 생각 엔 포함을 잊어 버린 것 같습니다. –

답변

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을 반환하지 않기 때문에.

관련 문제