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
880
C++26アップデート 2025-03
faithandbrave
0
2.3k
C++20の整数
faithandbrave
0
310
コンテナと文字列の中間インタフェースspanとstring_view
faithandbrave
1
670
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
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
150
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
150
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.1k
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
260
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
160
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
150
Sigmaで作る業務アプリ
kazushiro_honma
0
120
家のリアーキテクト・リファクタリング
suguruooki
0
120
安心して変更できるWebフロントエンドの作り方
pirosikick
3
870
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
340
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
220
あるけみー式LTスライド作成術
alchemy1115
1
180
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Navigating Weather and Climate Data
rabernat
0
510
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Agile that works and the tools we love
rasmusluckow
331
22k
RailsConf 2023
tenderlove
30
1.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Designing for Performance
lara
611
70k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
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が 出力されて処理が続行する
まとめ • エラー分類が今後変更されていくことで、 クラッシュしない場合の動作が規定されていく • それによってプログラムの安全性が高くなっていく • 「なにが起こるかわからない (未定義動作)」から 「クラッシュもしくは規定された処理続行
(エラー性動 作)」へ