На основании документации описание следующее
Код: Выделить всё
Determines the promise type from the return type and parameter types of a coroutine. The standard library implementation provides a publicly accessible member type promise_type same as R::promise_type if the qualified-id is valid and denotes a type. Otherwise, it has no such member.
Program-defined specialisations of coroutine_traits must define a publicly accessible nested type promise_type, otherwise the program is ill-formed.
Notes
If the coroutine is a non-static member function, then the first type in Args... is the type of the implicit object parameter, and the rest are parameter types of the function (if any).
If std::coroutine_traits::promise_type does not exist or is not a class type, the corresponding coroutine definition is ill-formed.
Users may define explicit or partial specializations of coroutine_traits dependent on program-defined types to avoid modification to return types.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ine-traits