Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
C++26 エラー性動作
Search
Akira Takahashi
December 20, 2024
Technology
1.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
C++26 エラー性動作
Akira Takahashi
December 20, 2024
More Decks by Akira Takahashi
See All by Akira Takahashi
P2P通信の標準化 WebRTCを知ろう
faithandbrave
6
3.3k
C++20 射影変換
faithandbrave
0
920
C++26アップデート 2025-03
faithandbrave
0
2.3k
C++20の整数
faithandbrave
0
310
コンテナと文字列の中間インタフェースspanとstring_view
faithandbrave
1
680
C++23 スタックトレースライブラリ
faithandbrave
0
650
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
1.6k
使いたい標準C++機能がない環境でいかに実装・設計するか
faithandbrave
2
1.3k
C++20からC++23までの変化
faithandbrave
9
12k
Other Decks in Technology
See All in Technology
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
580
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
300
Essential architectural thinking (revised edition)
ufried
0
110
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
5.8k
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.1k
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
0
310
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
370
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
510
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
120
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
300
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
1.1k
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.5k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Building an army of robots
kneath
307
47k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
ラッコキーワード サービス紹介資料
rakko
1
5.3M
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
370
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Ethics towards AI in product and experience design
skipperchong
2
420
Agile that works and the tools we love
rasmusluckow
331
22k
Documentation Writing (for coders)
carmenintech
77
5.6k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
730
Transcript
C++26 エラー性動作 (erroneous behavior) 高橋 晶 (Akira Takahashi)
[email protected]
Preferred
Networks, Inc. 2024/12/20 (金) C++ MIX #12
C++26 エラー性動作 • C++26から、環境によって発生する可能性のあるエラー動作と して、「エラー性動作 (erroneous behavior)」が追加された • これまであった未定義動作、未規定動作などと比較しながら 見ていこう
未定義動作 (undefined behavior; UB) • 特定の操作に対して、予期せぬ動作をする可能性がある • 範囲外アクセスやゼロ割など • クラッシュする可能性もあるし、しない可能性もある
• クラッシュしないとしても何が起こるかはわからない • プログラマは未定義動作がないコードを書かないといけない • UBSan (Undefined Behavior Sanitizer) ツールで検出できる
未規定動作 (unspecified behavior) • C++規格では動作を規定せず、処理系で規定する • 例外のエラーメッセージ、sizeof(long)、ラムダ式のオブジェ クトサイズなど • 処理系のよって異なる動作をするが、危険ではない
(クラッ シュはしない)
エラー性動作 (erroneous behavior) • 未定義動作を安全側に倒した動作 • クラッシュする可能性もあるし、しない可能性もある • クラッシュしない場合の動作が規定される •
C++26でエラー性動作に分類されるのは、 「未初期化値の読み取り」のみ
未初期化値の読み取り int f(int x) { // 処理が続行した場合… int y =
x; // エラー性動作ではない } int x; // エラー性の値 (erroneous value) をもつ f(x); // エラー性動作 (エラー性の値を読み取った) • エラー性動作が起こったあとは、エラー性の値とは見なされない • ただしunsigned char (とstd::byte) ではエラー性動作にはならない
不定値の使用を明示 int f(int x) {} int g(int x [[indeterminate]]) {
int y = x; // 未定義動作 } int x [[indeterminate]]; // 意図して不定値を使う f(x); // 未定義動作 g(x); // OK • 不定値として初期化すること、不定値を受け取ることを明示する属 性もいっしょに入る • 不定値の読み取りは、エラー性動作ではなく未定義動作になる
将来、エラー性動作に分類されるかもしれない操作 • 符号付き整数のオーバーフロー • 型変換をした結果、表現可能な範囲を超えた • ゼロ割 例として、ゼロ割はARM CPUではクラッシュせず値0が 出力されて処理が続行する
まとめ • エラー分類が今後変更されていくことで、 クラッシュしない場合の動作が規定されていく • それによってプログラムの安全性が高くなっていく • 「なにが起こるかわからない (未定義動作)」から 「クラッシュもしくは規定された処理続行
(エラー性動 作)」へ