[coroutine.traits.primary] (original) (raw)

The header <coroutine> defines the primary templatecoroutine_­traits such that if ArgTypes is a parameter pack of types and if the qualified-id R​::​promise_­type is valid and denotes a type ([temp.deduct]), then coroutine_­traits<R,ArgTypes...> has the following publicly accessible member:

using promise_type = typename R::promise_type;

Otherwise, coroutine_­traits<R,ArgTypes...> has no members.

Program-defined specializations of this template shall define a publicly accessible nested type named promise_­type.