Document Number: N3042=10-0032
Date: 2010-02-15
Project: Programming Language C++

Detlef Vollmann <>

N3042: Renaming launch::any and what asyncs really might be


N2996 introduced two new function calls async to start some function asynchronously and return a future to obtain the result of the function. N2996 allowed for two mechanisms to run that function: in another thread or as deferred function in the same thread.


The two launching mechanisms defined by N2996 make sense for the current revision of the standard, but future revisions of C++ might allow for a much larger variety of launching mechanisms. Some potential mechanisms might be:

Some of these future mechanisms might want to use the existing async function, just with a different launch policy. With this in mind, the naming of launch::any is unfortunate, as it only allows for "calling in another thread" and "calling in the same thread".

So I propose to change launch::any to launch::any_sync.

Proposed Changes

In 30.6.1 [futures.overview], header <future> synopsis, enum class launch: