std::coroutine_traits
来自cppreference.com
在标头 <coroutine> 定义
|
||
template< class R, class... Args > struct coroutine_traits; |
(C++20 起) | |
从协程的返回类型与形参类型确定承诺类型。标准库实现提供与 R::promise_type
相同的公开可访问成员类型 promise_type
,若该有限定标识合法并代表类型。否则它无成员。
coroutine_traits
的程序定义特化应当定义公开可访问的成员类型 promise_type
,否则行为未定义。
模板形参
R | - | 协程的返回类型 |
Args | - | 协程的形参类型,若协程为非静态成员函数则包括隐式对象形参 |
成员类型
类型 | 定义 |
promise_type
|
R::promise_type ,若它合法,或由程序定义特化提供
|
可能的实现
template<class, class...> struct coroutine_traits {}; template<class R, class... Args> requires requires { typename R::promise_type } struct coroutine_traits<R, Args...> { using promise_type = R::promise_type; }; |
注解
若协程为非静态成员函数,则 Args...
中的首个类型为隐式对象形参的类型,而剩下的是函数的形参类型(若存在)。
若 std::coroutind_traits<R, Args...>::promise_type 不存在或不是类类型,则对应的协程定义为谬构。
用户可定义取决于程序定义类型的 coroutine_traits
显式或偏特化,以避免修改返回类型。
示例
本节未完成 原因:暂无示例 |