The header
<coroutine> defines the primary template
coroutine_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: