Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
tfcon-2022-cpp
Search
Ryo Suzuki
May 14, 2022
Technology
5
7.9k
tfcon-2022-cpp
TechFeed Conference 2022「最近の C++ (2022 年)」
発表者:
https://twitter.com/Reputeless
Ryo Suzuki
May 14, 2022
Tweet
Share
More Decks by Ryo Suzuki
See All by Ryo Suzuki
C++ MIX #9
cpp
4
5.2k
DojoCon2021-Siv3D
cpp
0
360
JSSST2021-Siv3D
cpp
1
880
CEDEC2020
cpp
54
43k
Other Decks in Technology
See All in Technology
リーダーになったら未来を語れるようになろう/Speak the Future
sanogemaru
0
280
英語は話せません!それでも海外チームと信頼関係を作るため、対話を重ねた2ヶ月間のまなび
niioka_97
0
120
GopherCon Tour 概略
logica0419
2
190
Where will it converge?
ibknadedeji
0
180
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
0
120
多野優介
tanoyusuke
1
430
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9k
社内お問い合わせBotの仕組みと学び
nish01
0
300
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
200
Findy Team+のSOC2取得までの道のり
rvirus0817
0
330
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
130
20250929_QaaS_vol20
mura_shin
0
110
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
4 Signs Your Business is Dying
shpigford
185
22k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
How to Think Like a Performance Engineer
csswizardry
27
2k
Building an army of robots
kneath
306
46k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Designing for Performance
lara
610
69k
Rails Girls Zürich Keynote
gr2m
95
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Transcript
鈴木 遼 (Siv3D) 最近の C++ (2022 年) 5 分でわかる C++
のトレンド 1
発表者プロフィール 鈴木 遼 • C++ ゲーム・アプリ開発フレームワーク Siv3D の作者 • C++
プログラミング教室を運営 / 早稲田・上智・駒澤大学で講義 • C++ に関する商業出版 / 技術書典出展 / 技術発表
身近なところに C++ • OS (Windows, Android, macOS, iOS) • Web
ブラウザ (Google Chrome, Firefox, Safari) • コンピュータグラフィックス (Photoshop, CAD ソフト) • オフィススイート (Microsoft Office, LibreOffice) • ゲームエンジン (Unreal Engine, Unity, Godot) • コンシューマゲーム / モバイルゲーム • Web サービスのバックエンド (Google, YouTube, Facebook, Amazon) • 組み込み / ロボット / 自動運転車 • 金融 (C++ 作者 Bjarne Stroustrup は、現在モルガン・スタンレーの Technical Fellow) • プログラミング言語コンパイラ / 仮想マシン
競技プログラミングのブームで C++ 学習者が増加 • AtCoder などの競技プログラミング(競プロ)に挑戦する人が増えている • 競プロは歴史的に C++ がデファクトスタンダード
• 中高生が目標とする、日本情報オリンピック (JOI) / 国際情報オリンピック (IOI) は C++ を使うルールになっている • 競プロに関する書籍の多くが C++ を前提に書かれている
便利なオンライン C++ コンパイラが登場 • Web ページ上で C++ コードを書いて実行結果を確認できるサービスが発展 • 複数のコンパイラの種類やバージョン間の比較・検証が容易に
Compiler Explorer • 各種コンパイラ (GCC, Clang, MSVC など) での コード実行結果、生成されるアセンブリを出力 • 代表的な (非標準) ライブラリも収録 Wandbox • 国産の C++ オンラインコンパイラ • コードの実行結果を表示。API も提供
静的コード解析ツールが進化 • 静的コード解析ツールの性能が向上し、C++ の様々な間違い / 非効率を、 実行前に検出できるようになってきた GCC や Clang
の静的解析機能 Visual Studio • エディタ上に情報を表示 PVS-Studio • ヒューリスティック解析による typo の検出にも強い
C++ Core Guidelines が整備 • C++ プログラマが統一的で優れたモダン C++ を書くためのガイドライン •
2015 年に初公開 • 現在もアクティブにメンテナンスされ 約 500 項目に • 各ガイドラインはルール、理由、サンプルコード、代替案や例外などで構成 • 『Effective C++』や『C++ Coding Standards』の現代版 • ガイドラインの大半は、静的解析ツールでの検証ができるようデザイン • (例 1) C.47: メンバー変数は宣言順のとおりに定義、初期化する • (例 2) ES.86: ループ変数を for 文の本体で変更することを避ける
C++ の規格更新と主要コンパイラの対応状況 • 主要コンパイラ (GCC, Clang, MSVC) は、ほぼ対応完了。 業務での活用事例も増えている •
MSVC が一番乗りで対応完了、GCC, Clang も大部分の機能に対応 • 一部の機能が、最新のコンパイラにおいて先取りで使える 2016 2017 2018 2019 2020 2021 2022 2023 2024 C++17 発行 主要コンパイラが C++17 対応を実装 C++20 発行 主要コンパイラが C++20 対応を実装 C++23 発行 主要コンパイラが C++23 対応を実装 C++17 C++20 C++23
C++17 の注目機能 • ファイルやディレクトリの操作に関する ライブラリ • 無効値を表現できる 型 • Java
の や Haskell の に相当 • 型安全に共用体 ( ) を表現できる 型 • Tuple-like な値を分解して、複数の変数にバインドできる構造化束縛 • 戻り値の無視時に、コンパイラに警告を出させる 属性 • 所有権を持たない文字列クラス を返す関数
C++20 の注目機能 • ヘッダを置き換える Modules • テンプレートの型制約を柔軟かつ簡潔に記述できる Concepts • Python
風のテキストフォーマット • 三方比較演算子 <=> と、それによる比較演算定義の簡略化(自動化) • コルーチン用の文法 • コンパイル時計算できる操作の拡大(ソートや動的配列も に) • ビット演算に関する標準ライブラリ関数の追加
C++23 の注目機能 (予定) • のように添字演算子に複数の引数を渡せるように • スタックトレースに関する情報を取得する ライブラリ • 標準ライブラリが
Modules に対応 • の代わりに ですべての標準ライブラリを使用可能 • の進化版
C++ 最新情報はどこで手に入る? 日本語 • cpprefjp • cppmap • C++ Twitter
コミュニティ 英語 • Standard C++ Foundation • cppreference.com • reddit [r/cpp] • hacking C++