This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3 patch] future_status::deferred for std::async futures

This implements a missing std::async feature and also implements LWG 2100.

The State_base and Async_state_common types are replaced (but still
exported from for compatibility) with new versions with
an extra virtual function.

Tested x86_64-linux, committed to trunk.

2013-11-20  Jonathan Wakely  <>

        PR libstdc++/49204
        * include/std/future (__future_base::_State_base): Rename to
        (__future_base::_State_baseV2::~_State_baseV2): Define as defaulted.
        (__future_base::_State_baseV2::_M_run_deferred): Rename to
        (__future_base::_State_baseV2::_M_has_deferred): Add new virtual.
        (__future_base::_State_baseV2::wait_for): Call _M_has_deferred() to
        test for a deferred function, or call _M_complete_async() to join an
        async thread that has made the shared state ready.
        (__future_base::_State_baseV2::wait_until): Likewise.
        (__future_base::_Async_state_common): Rename to _Async_state_commonV2.
        (__future_base::_Async_state_commonV2::_M_run_deferred): Rename to
        * src/c++11/ (__future_base::_State_base):
        Export old definition.
        (__future_base::_Async_state_common): Likewise.
        * src/c++11/ (__future_base::_State_base::~_State_base):
        * doc/xml/manual/status_cxx2011.xml: Update status.
        * testsuite/30_threads/async/ Test future_status::timeout
        and future_status::ready.
        * testsuite/30_threads/async/ Test future_status::deferred.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]