プログラミング言語C++の国際標準規格(ISO/IEC 14882)バージョン間差分を、セクション別に確認できるWebサイト。 https://cppevo.dev/
本文こちら→C++ MIX #16に参加しました - yohhoyの日記(別館)スライド資料:https://www.docswell.com/s/yohhoy/ZQXJ2E-cpp26-execution関連URL C++26 Executionライブラリ(基礎編) - yohhoyの日記 C++26 Executionライブラリ(Senderアルゴリズム編) -…
C++2c(C++26)実行制御ライブラリ(execution control library)(→id:yohhoy:20250609)における非同期操作の早期開始と非同期スコープについて。Sender型で表現されたタスクチェインに対して、非同期操作の開始要求と完了待機を一括実施する遅延開始(lazy sta…
プログラミング言語Cにおいて、式(expression)として扱えるコンパイル時アサートの実装例(C99以降)。*1 *2 #include <assert.h> #define static_assert_expr(cexp_, msg_) \ ((void)sizeof(struct { \ static_assert(cexp_, msg_); \ int dummy_member; \ })) C言語</assert.h>…
C++2c(C++26)実行制御ライブラリ(execution control library)(→id:yohhoy:20250609)において、Sender型の完了シグネチャ集合(set of completion signatures)の宣言方法。[P3557R3採択後WD N5014*1準拠]自作SenderクラスMySenderの完了シグネチャ集合は、…
プログラミング言語C++において、与えられた型があるクラステンプレートの特殊化(specialization)か否かを判定する方法。id:yohhoy:20220122のC++2c(C++26) Reflection(→id:yohhoy:20250305)バージョン。自明な実装で面白みはない... // C++2c(C++26) #inc…
C++20からサポートされたコンパイル時動的確保データを、コンパイル時定数としてプログラム実行時へと効率的に持ち越すテクニック。C++23現在の言語仕様では、コンパイルフェーズで動的確保(new)されたデータ領域はコンパイルフェーズにおいて解放(delete)さ…
C++2c(C++26)実行制御ライブラリ(execution control library)(→id:yohhoy:20250609)において、キャンセル可能なSenderの実装方法。実行制御ライブラリにおける非同期操作のキャンセルは、Receiver側で発行された停止要求(stop request)をSender側が明示的…
C++2c(C++26)標準ライブラリに追加される実行制御ライブラリ(execution control library)についてメモ。別名:std::execution, Senders/Receivers(S/R)2025年5月現在、ベースライン提案文書P2300R10までを採択済み。 2025-07-20追記:2025年6月会合にて関連…
C++2c(C++26)標準ライブラリに追加される実行制御ライブラリ(execution control library)についてメモ。別名:std::execution, Senders/Receivers(S/R)2025年5月現在、ベースライン提案文書P2300R10までを採択済み。 2025-07-20追記:2025年6月会合にて関連…
C++2c(C++26)標準ライブラリに追加される実行制御ライブラリ(execution control library)についてメモ。別名:std::execution, Senders/Receivers(S/R)2025年5月現在、ベースライン提案文書P2300R10までを採択済み。 2025-07-20追記:2025年6月会合にて関連…
プログラミング言語Cの次期標準C2yでは、配列要素数を安全に取得する_Countof演算子が導入される。オペランドに配列型を要求すること以外は、構文規則的にsizeof演算子とほぼ同じ。 // C2y int fibs[] = { 1, 1, 2, 3, 5, 8, 13, 21 }; static_assert(_Count…
C++23標準ライブラリのシーケンスコンテナ*1に対するRange挿入操作では、挿入先コンテナと挿入元Rangeとの要素オーバーラップが{append,prepend}_range操作でのみ許容される。それ以外のメンバ関数で要素オーバーラップしていた場合は未定義動作(undefined b…
次期C++2c(C++26)標準規格に向けて検討が進んでいる リフレクション(reflection) についてメモ。本記事の内容は提案文書 P2996R10 に基づく。2025-07-18追記:2025年6月会合にてP2996R13[言語コア機能とライブラリ]、および一連の関連提案P3560R2[エラー…
プログラミング言語C++の次期標準C++2c(C++26)向けに提案されている展開文(Expansion statement)について。template for構文をもちいて本体処理を反復的にコンパイル時展開する。2025-06-22追記:2025年6月会合にてP1306R5が採択され*1、C++2c言語仕様に展開…
サンプルコードによるC++23ジェネレータの紹介本文こちら→C++ MIX #13に参加しました - yohhoyの日記(別館)スライド資料:https://www.docswell.com/s/yohhoy/KEXQPG-cpp23gen関連URL コルーチン×ラムダ式キャプチャ=鼻から悪魔 - yohhoyの日記 std::gene…
プログラミング言語C++の次期標準C++2c(C++26)に導入されるdeclcall演算子についてメモ。declcall演算子は関数呼び出しを含む式をオペランドにとり、オーバーロード解決後の関数ポインタ/メンバ関数ポインタを返す定数式(constant expression)となる。この…
プログラミング言語Cの次期標準C2yでは、名前付きループ(Named Loop)構文としてbreak/continue文へのラベル指定がサポートされる。 // C2y outer: for (int i = 0; i < N; ++i) { for (int j = 0; j < M; ++j) { break; // 内部ループ脱出: 1)へ break oute…
プログラミング言語Cの次期標準C2yでは、8進数リテラルプレフィクス0o/0Oが導入される。 // C2y int n1 = 0o52; // 42 int n2 = 0O52; // 42 int n0 = 052; // 42 (従来記法; 廃止予定) 0o/0Oプレフィクス追加と同時に、数値0のみプレフィクスとする従来8…
2024年11月 OpenMP 6.0仕様リリース記事 https://www.openmp.org/home-news/openmp-arb-releases-openmp-6-0-for-easier-programming/ より抄訳。OpenMP仕様バージョン6.0はOpenMP ARB、主要なコンピュータハードウェア/ソフトウェアベンダーのグループ、そ…
異なるプログラミング言語における式i += 1 + ++i処理結果の違いについて。番外編。 // Go var i = 0 i += 1 + ++i // ?? // Rust let mut i = 0; i += 1 + ++i; // ?? まとめ: Go:コンパイルエラー Rust:コンパイルエラー Java/JavaScript/C#:値2(→i…
異なるプログラミング言語における式i += 1 + ++i処理結果の違いについてメモ。警告:1つの式内で同一変数を複数回更新する技巧的なコード記述は避けてください。DO NOT WRITE THIS ON PRODUCTION CODE. sequenced-before関係ルールを覚えてまで際どいコード…
異なるプログラミング言語における式i += 1 + ++i処理結果の違いについてメモ。*1警告:1つの式内で同一変数を複数回更新する技巧的なコード記述は避けてください。こんな式を書くもんじゃねぇよ言語仕様書の紙束で張っ倒すぞ(#ノ゚Д゚)ㇸ ...取り乱しました。 …
C++標準ライブラリで提供されるstd::monostateは、単一値しか持たない ユニット型(Unit type) としても利用できる。*12024-11-29追記:C++2c(C++26)に向けて提案文書(PDF)P0472R3が採択され、ヘッダ<utility>にも汎用部品としてstd::monostateが追加される。*2std::mo</utility>…
プログラミング言語Cの次期仕様C2yでは、16進数表記で用いられるアルファベット文字範囲'a'~'f'および'A'~'F'について文字コードの連続性保証が明文化される。この文字コード範囲での連続性保証は、ラテンアルファベット26文字 A~Z / a~z が連続配置され…
C++標準ライブラリの固定長配列型std::array<T, N>では、要素数ゼロN == 0が明示的に許容される。一方で、C++言語組込の配列型においては要素数ゼロが許容されない。*1C++11 8.3.4/p1, 23.3.2.8より一部引用。 In a declaration T D where D has the form D1 [ con</t,>…
プログラミング言語Cにおける配列添字演算子(array subscript operator)[]の伝統的かつ奇妙な言語仕様に関して、次期C2yをターゲットとした仕様修正が提案されている。小ネタ以外の使い道もなく修正されて良い頃合いかもね?*1 const char msg[] = "Hello"; …
C++20標準ライブラリのstd::strong_order関数オブジェクト*1は、IEEE 754準拠の浮動小数点数型に対する全順序比較(totalOrder predicate)を実装する。 #include <compare> #include <concepts> #include <iostream> #include <limits> #include <map> #include <string> template<std::floating_point T> struct totalOrder { static_</std::floating_point></string></map></limits></iostream></concepts></compare>…
CUDAアーキテクチャにおける自然なメモリアライメントは 256 バイト。CUDA提供のメモリ確保関数(cudaMalloc等)は、少なくとも 256 バイト・アライメントされたアドレスを返す。 Size and Alignment Requirement (snip) Any address of a variable residing…
プログラミング言語Cの次期仕様C2yでは、複素数型(_Complex float/double/long double)に対するインクリメント/デクリメントが正式サポートされる。gcc/Clangでは独自拡張としてサポート済み。 _Complex double c = 41.; ++c; // OK: C2y assert(c == 42.);…