C ++ 11 future_status :: deferred не работает

#include <iostream>
#include <future>
#include <chrono>

using namespace std;
using namespace std::chrono;

int sampleFunction(int a)
{
    return a;
}

int main()
{
   future<int> f1=async(launch::deferred,sampleFunction,10);
   future_status statusF1=f1.wait_for(seconds(10));
   if(statusF1==future_status::ready)
        cout<<"Future is ready"<<endl;
   else if (statusF1==future_status::timeout)
        cout<<"Timeout occurred"<<endl;
   else if (statusF1==future_status::deferred)
        cout<<"Task is deferred"<<endl;
   cout<<"Value : "<<f1.get()<<endl;
}

Output -
Timeout occurred
Value : 10

В приведенном выше примере я ожидалfuture_status бытьdeferred вместоtimeout. sampleFunction был запущен какlaunch::deferred, Следовательно, он не будет выполнен доf1.get() был вызван. В таком состоянииwait_for должен был вернутьсяfuture_status::deferred и неfuture_status::timeout.

Цените, если кто-то может помочь мне понять это. Я использую g ++ версии 4.7.0 на fedora 17.

Ответы на вопрос(1)

Ваш ответ на вопрос