ゲーム開発者のための C++11〜C++20 技術書典 10 Ver.

ゲーム開発者のための C++11〜C++20 技術書典 10 Ver.

◆ 内容 本書は、2020 年 9 月に開催された CEDEC 2020 講演「ゲーム開発者のための C++11~C++20, 将来の C++ の展望」で取り上げた C++11~C++20 機能を解説し、説明や項目、サンプルを加筆した本です。 CEDEC ではスライドの面積の都合で include や詳細な実装が省略されていたコードも完全な形で掲載しています。 さらに付録として、2020 年 12 月時点での C++ 標準化委員会の議論の状況を反映し、C++23 に入ることが決まった / 入る見込みが高い 13 個の提案を先取りで解説しています。 ◆ 注意 本書は 2020 年 12 月の「技術書典 10」で販売された PDF 書籍・紙書籍(https://techbookfest.org/product/5738569643589632)と同一の内容です。 必要に応じて改訂やマイナーアップデートを行います。 ◆ 対象読者 ・モダン C++ にキャッチアップしたい方 ・C++11~C++20 の新機能をサンプルで学びたい方 ◆ C++20 対応コンパイラ(2021 年 1 月時点) ・Visual Studio 2019(/std:c++latest オプションを指定) ・Clang(-std=c++2a オプションを指定) ・GCC(-std=c++2a オプションを指定) オンラインコンパイラ(https://wandbox.org)を使うのが最も手軽です。 コンパイラによっては、本書で扱っている一部の機能(とくに C++20)が未実装の場合があります。 ◆ 著者 ・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/)を引用している部分があります。 しかしながら本書の内容に関しては一切の責任は著者陣にあります。万が一わかりにくい点や改善点がございましたら、著者までご一報ください。

Chapters
Chapter 01無料公開

値を一定の範囲に収めるときは std::clamp() を使おう

Chapter 02無料公開

標準ライブラリの数学定数を使おう

Chapter 03無料公開

std::string に追加された便利な関数を知ろう

Chapter 04無料公開

連想コンテナ内のキーの有無の確認を .contains() で明快にしよう

Chapter 05無料公開

列挙型名が何度も登場するコードを using enum で短くしよう

Chapter 06無料公開

コンテナから要素を削除する、一貫性のある方法を知ろう

Chapter 07無料公開

変数未使用の警告を抑制する方法を知ろう

Chapter 08無料公開

ビット操作のための便利な関数を使おう

Chapter 09

配列にもコンテナにも使える、サイズ、イテレータ取得関数を使おう

Chapter 10

ソースコード上の位置情報を手軽に扱おう

Chapter 11

オブジェクトのバイト列は std::byte で表現しよう

Chapter 12

範囲を 1 つの引数で渡すアルゴリズム関数を使おう

Chapter 13

標準のファイルとディレクトリ操作を使おう

Chapter 14

初期化付き条件分岐を使って、変数のスコープを狭くしよう

Chapter 15

比較演算子の実装を楽にしよう

Chapter 16

構造体のメンバを名前でわかりやすく初期化しよう

Chapter 17

リテラル演算子を定義して定数を簡潔に書こう

Chapter 18

柔軟になったラムダ式のキャプチャを活用しよう

Chapter 19

複数の値は構造体や std::pair, std::tuple で返し、構造化束縛で受け取ろう

Chapter 20

[[nodiscard]] で関数の使い間違いを防ごう

Chapter 21

クラステンプレートのテンプレート引数推論を活用しよう

Chapter 22

無効値を表現したいときに std::optional を使おう

Chapter 23

型安全な共用体を std::variant で実現しよう

Chapter 24

テンプレートの型に応じた処理には constexpr if を使おう

Chapter 25

テンプレートパラメータにコンセプトで制約を加えよう

Chapter 26

カスタマイゼーションポイントオブジェクト (CPO) を優先して使おう

Chapter 27

文字列を std::string_view で受け渡ししよう

Chapter 28

ポインタのバイト境界をコンパイラに伝えよう

Chapter 29

配列要素の効率的なシフト操作を知ろう

Chapter 30

非順序連想コンテナをもっと効率よく使おう

Chapter 31

ステートレスなデータメンバのメモリ消費をゼロにしよう

Chapter 32

分岐の起こりやすさをコンパイラに伝える方法を知ろう

Chapter 33

数値 → 文字列の変換には std::to_chars() を使おう

Chapter 34

文字列 → 数値の変換には std::from_chars() を使おう

Chapter 35

洗練された文字列フォーマット機能を使おう

Chapter 36

コンパイル時に実行できる標準ライブラリ関数の操作を知ろう

Chapter 37

コンパイル時と実行時で処理を分ける方法を知ろう

Chapter 38

新しいアロケータを知ろう

Chapter 39

符号の有無の異なる整数型の比較に、専用の関数を使おう

Chapter 40

連続するメモリの範囲を std::span で受け渡ししよう

Chapter 41

ヘッダに代わるファイル分割の仕組み「モジュール」

Chapter 42

中断と再開をサポートする関数「コルーチン」

Chapter 43

次期規格 C++23 に入ることが決まった機能の紹介

Chapter 44

C++23 入りが見込まれている機能の紹介

Author
Tetsuro Matsumura

主にC++, Qtでアプリケーション開発をしています。

Topics
公開
本文更新
文章量
75146
価格
1200