C++20 コア言語機能読書会vol.7
開催日時
2022年5月25日(水) 21:00~22:30
開催URL
参加人数
1~2人
ウォーミングアップ
p.37 上記例中のpromise_typeは~
キーワードがいまいち頭の中に定着していないのでまとめる
co_await
コルーチン呼び出しして終了するまで待機する
co_yield
co_yieldに与えられた引数を返す
再度関数が呼ばれたらその次の行から再開する
co_return
co_returnに与えられた引数を返す(あれば)
このコルーチンの終わりの要素だということを示す
こういう感じの簡単な説明が2.4の始めにあると私はうれしいな
例の中のresultはFutureパターンに置けるfuture
promise_typeはプロミス型と呼ばれるユーザー定義の任意の型
こことR(コルーチンの戻り値の型)でカスタマイズを行う
ユーザ定義が必要
promise_typeの求め方
std::coroutine_traitsで特殊化されていたらそこから
特殊化されていなければR::promise_typeから
promise_typeオブジェクトの初期化方法
コルーチン関数の引数をコンストラクタの引数に流し込めたら流し込む
流し込めなければデフォルトコンストラクタ
コルーチンハンドルオブジェクト
promise.get_return_object()で取得
awaitable型
co_awaitで受け取るオブジェクトの型
co_awaitが受け取るものってコルーチン関数かと思っていたけど、正確にはそのコルーチンの戻り値を受け取っている
co_awaitはawaitable型しか受け取れない
require文で指定されていたような
std::suspend_neverやstd::suspend_alwaysはawaitable型
「3 つ」と「二つ」
校正で朱が入るミス
co_awaitは演算子
co_awaitとかの命名がイマイチ
__や_大文字って使えないの?
あれはあくまで標準ライブラリの実装のための予約であって言語仕様のためのモノではない
使うと標準ライブラリの実装が壊れる(可能性がある)
p.38 co_await式ではawaitable型のメンバ関数~
次回ここから
お悩み雑談室
非型テンプレートのclassとstructキーワード
template<class T, T a>
class とstructでABIがかなり変わる。なぜ?
type safe builder patternをご存じでない!?
この人英語のC++コミュニティとマルチポストしてた