ゲーム開発者のための C++17〜C++23 技術書典 17 Ver.
◆ 内容 本書は、ゲーム開発者カンファレンス CEDEC 2024(2024 年 8 月開催)において筆者らが行った講演 「ゲーム開発者のための C++17~C++23, 近年のC++規格策定の動向」 で取り上げた C++17~C++23 機能を解説し、説明や項目、サンプルを加筆した本です。CEDEC ではスライドの面積の都合で include や詳細な実装を省略していたコードも、なるべく完全な形で掲載しています。 なお、前作にあたる「ゲーム開発者のための C++11〜C++20 技術書典 10 Ver.」(https://zenn.dev/tetsurom/books/cpp11-cpp20-for-game-developers)とは、少数の例外を除いて内容の重複がないようにしています。 実用フェーズに入ってきたC++20までの内容については、こちらもご参照ください。 ◆ 注意 本書は 2024 年 11 月の「技術書典 17」で販売された PDF 書籍・紙書籍(https://techbookfest.org/product/1p61X6cAyA7aVThMuM3sj6)と同一の内容です。 必要に応じて改訂やマイナーアップデートを行います。 ◆ 対象読者 ・モダン C++ にキャッチアップしたい方 ・C++17~C++23 の新機能をサンプルで学びたい方 ◆ 著者 ・Ryo Suzuki(https://zenn.dev/reputeless) ・Tetsuro Matsumura(https://zenn.dev/tetsurom) ・Hiroaki Ando(https://zenn.dev/onihusube) ◆ 謝辞 本書の原案である CEDEC 講演スライドの作成にあたっては、高橋晶さん、川崎洋平さんに監修をいただきました。 また、記事の一部には著者らが参加する cpprefjp (https://cpprefjp.github.io/), cppmap (https://cppmap.github.io/) を引用している部分があります。 しかしながら本書の内容に関しては一切の責任は著者陣にあります。万が一わかりにくい点や改善点がございましたら、巻末の連絡先より著者へご一報ください。
size_t 型を表現するリテラルを活用しよう
ヘッダの有無を調べたいときは __has_include を使おう
状態をもたない関数オブジェクトの operator() をstaticにしよう
コンストラクタに [[nodiscard]] を指定しよう
範囲for文における一時オブジェクトの寿命に気を付けよう
関数の引数をコンパイル時にチェックする方法を知ろう
標準コンセプトを活用しよう
制約を使ったときの オーバーロード解決ルールを知ろう
列挙型から整数型への変換に std::to_underlying() を使おう
ある文字や文字列が含まれているかを .contains(x) で調べよう
.resize_and_overwrite() で std::string のコストをさらに抑えよう
符号無し整数型と符号付き整数型の値の比較を安全に行う方法を知ろう
std::optional::value_or() での不要なコストに気を付けよう
std::optional に追加されたモナディックな操作を知ろう
std::optional で不足するなら std::expected を使おう
配列が特定の並びで開始/終了しているかを調べる方法を知ろう
連続するメモリの範囲は std::span で表現しよう
1次元配列を多次元配列のように扱いたいときは std::mdspan を使おう
標準出力への出力には std::print() を使おう
配列やコンテナの文字列化を std::format() に任せよう
ユーザ定義型を std::format() に対応させる方法を知ろう
ファイルを排他的に作成する方法を知ろう
エラーの調査にスタックトレースオブジェクトを活用しよう
C APIのリソース管理にもスマートポインタを使おう
非推奨化/削除される機能に注意しよう
Rangeアダプタを使ってみよう
配列への逆順や部分アクセスに範囲for文を使おう
ループでインデックス値が必要なときも範囲for文が使えることを知ろう
複数のコンテナの要素を対応付けて扱うときも範囲for文を使おう
指定した区切り文字での文字列分割には std::views::split() を使おう
複数の集合の組み合わせを1つの範囲for文で簡単に生成しよう
単調増加や繰り返しのRangeを手軽に作成する方法を知ろう
集合を等サイズのグループに分割するときは std::views::chunk() を使おう
1要素ずつずらしながらグループを作るときは std::views::slide() を使おう
タプルを持つコンテナの範囲for文では必要なメンバアクセスだけ抽出しよう
C++の新しい規格が決まる過程
最新のC++標準化の状況を調べる方法
ネットワーク機能と非同期処理の紆余曲折
契約プログラミング導入はどうなっている?
パターンマッチング導入はどうなっている?
リフレクション導入はどうなっている?
ゲーム業界からC++標準化委員会への提言
- 公開
- 文章量
- 約76,400字
- 価格
- 1,000円