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
C++26 エラー性動作
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.2k
C++20 射影変換
faithandbrave
0
810
C++26アップデート 2025-03
faithandbrave
0
2.2k
C++20の整数
faithandbrave
0
290
コンテナと文字列の中間インタフェースspanとstring_view
faithandbrave
1
640
C++23 スタックトレースライブラリ
faithandbrave
0
630
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
1.5k
使いたい標準C++機能がない環境でいかに実装・設計するか
faithandbrave
2
1.3k
C++20からC++23までの変化
faithandbrave
9
12k
Other Decks in Technology
See All in Technology
noUncheckedIndexedAccess、3時間、1万円。 / noUncheckedIndexedAccess, 3 Hours, 10,000 JPY.
kaonavi
1
320
新規事業を牽引する技術選定 〜フルスタックTypeScript開発の実践事例〜
nullnull
3
360
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
210
Diagnosing performance problems without the guesswork
elenatanasoiu
0
170
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
1
210
新アーキテクチャ「TiDB X」解説とDedicated比較 TiDB Cloud Premiumのゲーム運用活用を検証
staffrecruiter
0
120
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
200
ルールやカスタム機能、どう使う?理想の出力を引き出すために今知りたいIBM Bob 5つの機能
muehara
1
350
Build with AI 楽しむ!アイデアを形に
norikotakiguchi
0
100
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
1.2k
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
120
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
300
Leo the Paperboy
mayatellez
7
1.8k
Visualization
eitanlees
152
17k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
190
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Color Theory Basics | Prateek | Gurzu
gurzu
0
360
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Building Applications with DynamoDB
mza
96
7.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
We Have a Design System, Now What?
morganepeng
55
8.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
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が 出力されて処理が続行する
まとめ • エラー分類が今後変更されていくことで、 クラッシュしない場合の動作が規定されていく • それによってプログラムの安全性が高くなっていく • 「なにが起こるかわからない (未定義動作)」から 「クラッシュもしくは規定された処理続行
(エラー性動 作)」へ