規格書

[C++] 式のstatic type

式の静的型(static type)は参照型にならない、すなわち、式の静的型は値カテゴリの情報を含まない、あるいは、式の静的型と式の値カテゴリは直行する概念である、ということに関するメモです。 以下、規格書の文面はC++20規格と同等のドラフトであるN4861…

[C++]コンセプトの文脈におけるmeet、satisfyとmodelの使い分けについて

この3つの言葉はどれも、あるコンセプトもしくは制約を満たすという意味で使われています。同じ意味のように思えますが標準ライブラリ中では明確な使い分けがなされています。 old conceptに対するmeet syntactic conceptに対するsatisfy semantic conceptに…

[C++]構造化束縛の動作モデルとラムダキャプチャ

一部のコンパイラでは構造化束縛宣言で導入された変数をラムダ式によってキャプチャすることができません。 実は、厳密に規格にのっとればC++17ならば出来ない、C++20からはできる、が正しい動作になります。 ただ、規格を眺めてもC++17でできず、C++20でき…

[C++]expression-equivalentのお気持ち

expression-equivalent?? 標準ライブラリへのRangeの導入に伴って新たに追加された言葉で、次のように定義されています。 expressions that all have the same effects, either are all potentially-throwing ([except.spec]) or are all not potentially-th…

[C++]std::from_charsにおける先頭スペースの扱いについて

C++17で追加されたstd::from_charsはその効果の説明においてCライブラリのstrtol、strtod関数を参照し、そこにいくつか制限を加えた形で説明されています。 ところで、strtol、strtod関数は共に入力文字列の先頭にあるスペースを読み飛ばすようになっていま…

[C++] constexpr関数がインスタンス化されるとき

「P0859R0 評価されない文脈でconstexpr関数が定数式評価されることを規定」を理解するためのメモです。 以下の文章内でのconstexpr関数についてのインスタンス化という言葉はテンプレートにおけるインスタンス化と同じ意味、すなわちconstexpr関数の定義の…

C++ 各バージョン毎の規格書

C++をある程度できるようになった気になってくると、ググっただけでは解決しない(もしくは、得心が行かない)事が増えてくると思われます。 そんな時、C++の全てを定めた原典たる規格書を参照しようという気持ちが強まっていくことでしょう。 しかし、規格…