/await コンパイラ オプションを使って、コルーチンのコンパイラ サポートを有効にします。
Note
/await オプションは、Visual Studio 2026 以降では非推奨となり、今後のリリースで削除される予定です。 標準の C++ コルーチンは、C++20 以降で既定で使用できます。 または、以前のバージョンの C++ 言語を使用する場合は、 /await:strict オプションを使用します。
構文
/await
/await:strict
解説
/await コンパイラ オプションを使うと、C++ のコルーチンとキーワード co_await、co_yield、co_return のコンパイラ サポートを有効にできます。 このオプションの既定値はオフです。 Visual Studio でのコルーチンのサポートについては、Visual Studio チーム ブログを参照してください。 コルーチンの標準提案の詳細については、N4628「Working Draft, Technical Specification for C++ Extensions for Coroutines (ワーキング ドラフト: コルーチンの C++ 拡張機能に関する技術仕様)」を参照してください。
/await オプションは Visual Studio 2015 以降で使用でき、Visual Studio 2026 以降では非推奨です。
Visual Studio 2019 バージョン 16.10 以降では、/await:strict の代わりに /await オプションを使用できます。 このオプションでは、C++14 または C++17 モードでビルドするプロジェクトで、C++20 互換のコルーチン サポートが提供されます。
/await:strict モードの場合、ライブラリのサポートは <coroutine> と std 名前空間で提供されます。
/await:strict オプションを指定すると、C++20 標準には採用されなかった /await に存在する言語拡張が無効になります。 そのような機能を使用すると、コンパイラ エラーが発生します。 このオプションでは、promise パラメーター プレビューなどのコルーチンの動作も実装されます。 これらの動作は、以前のバージョンの Visual Studio におけるバイナリ互換性の問題により、/await では使用できません。
Note
coroutine_handle<T>::address() から取得されたコルーチン状態オブジェクトは、/await モードと /await:strict モードの間で互換性がありません。 互換性のないモードでコンパイルされたコードによって作成されたコルーチン ハンドルから取得したアドレスで coroutine_handle<T>::from_address() を使用すると、未定義の動作が発生します。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
/awaitボックスに/await:strictまたは コンパイラ オプションを入力します。 [OK] または [適用] を選択して、変更内容を保存します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。AdditionalOptions