std::launch
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <future>
  | 
||
|   enum class launch : /* unspecified */ {     async =    /* unspecified */,  | 
(since C++11) | |
std::launch is a BitmaskType. It specifies the launch policy for a task executed by the std::async function.
Constants
The following constants denoting individual bits are defined by the standard library:
| Name | Explanation | 
 async
 | 
the task is executed on a different thread, potentially by creating and launching it first | 
 deferred
 | 
the task is executed on the calling thread the first time its result is requested (lazy evaluation) | 
In addition, implementations are allowed to:
- define additional bits and bitmasks to specify restrictions on task interactions applicable to a subset of launch policies, and
 - enable those additional bitmasks for the first (default) overload of std::async.
 
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
|---|---|---|---|
| LWG 2102 | C++11 | std::launch was an implementation-defined type
 | 
it is not implementation-defined | 
See also
|    (C++11)  | 
  runs a function asynchronously (potentially in a new thread) and returns a std::future that will hold the result  (function template)  |