C++20でコルーチンが追加された。 この記事ではアプリケーションユーザ(notライブラリ読者/開発者)向けにC++20のコルーチンについて説明する C++20のコルーチンの特徴 C++20のコルーチンのめぼしい特徴に以下がある 細かな制御/拡張ポイント 例えば以下のような制御/拡張ポイントがある コルーチンを作成したとき、一番最初の中断点まで進めるか 例外をどう取り扱うか このコルーチンの中断時の挙動はどうするか コールスタックを保存しないことによる高速なコルーチン(stacklessコルーチン) コンパイル時に確保すべきメモリサイズが確定できる & オブジェクト生成時に一括で確保する。 したがってコルーチン中断時にスタックに積まれたデータなどを動的に退避しなくてよくなる(vs stackfulコルーチン) 欠点は「awaitを呼ぶ(コルーチンではない)関数」のようなことができなくなる