Futures
Concurrency
Collaboration diagram for Futures:

## Classes

class | std::__basic_future< _Res >
struct | std::__future_base
struct | std::__future_base::_Result< _Res & >
struct | std::__future_base::_Result< void >
class | std::future< _Res >
class | std::future< _Res & >
class | std::future< void >
class | std::future_error
struct | std::is_error_code_enum< future_errc >
class | std::packaged_task< _Res(_ArgTypes...)>
class | std::promise< _Res >
class | std::promise< _Res & >
class | std::promise< void >
class | std::shared_future< _Res >
class | std::shared_future< _Res & >
class | std::shared_future< void >

## Typedefs

template<typename _Fn , typename... _Args>
using | std::__async_result_of = typename result_of< typename decay< _Fn >::type(typename decay< _Args >::type...)>::type

## Enumerations

enum | std::future_errc { future_already_retrieved, promise_already_satisfied, no_state, broken_promise }
enum | std::future_status { ready, timeout, deferred }
enum | std::launch { async, deferred }

## Functions

| std::__basic_future< _Res >::__basic_future (const shared_future< _Res > &) noexcept
| std::__basic_future< _Res >::__basic_future (shared_future< _Res > &&) noexcept
| std::__basic_future< _Res >::__basic_future (future< _Res > &&) noexcept
template<typename _Signature , typename _Fn , typename _Alloc >
static shared_ptr< __future_base::_Task_state_base< _Signature > > | std::__create_task_state (_Fn &&__fn, const _Alloc &__a)
template<typename _BoundFn >
static std::shared_ptr< _State_base > | std::__future_base::_S_make_async_state (_BoundFn &&__fn)
template<typename _BoundFn >
static std::shared_ptr< _State_base > | std::__future_base::_S_make_deferred_state (_BoundFn &&__fn)
template<typename _Fn , typename... _Args>
future< __async_result_of< _Fn, _Args... > > | std::async (launch __policy, _Fn &&__fn, _Args &&... __args)
template<typename _Fn , typename... _Args>
future< __async_result_of< _Fn, _Args... > > | std::async (_Fn &&__fn, _Args &&... __args)
const error_category & | std::future_category () noexcept
error_code | std::make_error_code (future_errc __errc) noexcept
error_condition | std::make_error_condition (future_errc __errc) noexcept
constexpr launch | std::operator & (launch __x, launch __y)
launch & | std::operator &= (launch &__x, launch __y)
constexpr launch | std::operator^ (launch __x, launch __y)
launch & | std::operator^= (launch &__x, launch __y)
constexpr launch | std::operator| (launch __x, launch __y)
launch & | std::operator|= (launch &__x, launch __y)
constexpr launch | std::operator~ (launch __x)
shared_future< _Res > | std::future< _Res >::share () noexcept
shared_future< void > | std::future< void >::share () noexcept
template<typename _Res >
void | std::swap (promise< _Res > &__x, promise< _Res > &__y) noexcept
template<typename _Res , typename... _ArgTypes>
void | std::swap (packaged_task< _Res(_ArgTypes...)> &__x, packaged_task< _Res(_ArgTypes...)> &__y) noexcept

## Detailed Description

Classes for futures support.

## Enumeration Type Documentation

## future_errc

enum std::future_errc

strong

Error code for futures.

Definition at line 66 of file future.

## future_status

enum std::future_status

strong

Status code for futures.

Definition at line 174 of file future.

## launch

enum std::launch

strong

Launch code for futures.

Definition at line 137 of file future.

## Function Documentation

## async() [1/2]

template<typename _Fn , typename... _Args>

future< __async_result_of< _Fn, _Args... > > std::async | ( | launch | __policy,
|  | _Fn && | __fn,
|  | _Args &&... | __args
| ) |  |

async

Definition at line 1712 of file future.

## async() [2/2]

template<typename _Fn , typename... _Args>

future< __async_result_of< _Fn, _Args... > > std::async | ( | _Fn && | __fn,
|  | _Args &&... | __args
| ) |  |

inline

async, potential overload

Definition at line 1745 of file future.

## future_category()

const error_category& std::future_category | ( |  | ) |

noexcept

Points to a statically-allocated object derived from error_category.

Referenced by std::make_error_code(), and std::make_error_condition().

## make_error_code()

error_code std::make_error_code | ( | future_errc | __errc | ) |

inline noexcept

Overload for make_error_code.

Definition at line 84 of file future.

References std::future_category().

## make_error_condition()

error_condition std::make_error_condition | ( | future_errc | __errc | ) |

inline noexcept

Overload for make_error_condition.

Definition at line 89 of file future.

References std::future_category().

## swap()

template<typename _Res , typename... _ArgTypes>

void std::swap | ( | packaged_task< _Res(_ArgTypes...)> & | __x,
|  | packaged_task< _Res(_ArgTypes...)> & | __y
| ) |  |

inline noexcept

swap

Definition at line 1579 of file future.

References std::call_once().

Referenced by std::shared_future< void >::shared_future().