2024/5/1(水)

cpprefjpを読み進めた。「alignof」~「数値リテラルの桁区切り文字」まで。

alignof

アラインメントを気にしたことが未だにないので使うシチュエーションが分からない。構造体の特定のメンバの位置が知りたいならoffsetofを使えばいいし…

alignas

上に同様だが、こっちはまだ用途が想像できる。「アラインメントをいくつにしろ」みたいな要求があるシステムに触れるときに使いそう。

UTF-8文字列リテラル

char8_t[]じゃなくてchar[]になってたの本当に頭いかれてると思う。C++20で直ってよかった。

Pragma演算子

こんなのあるんだ。サンプルコードの#pragmaだとできないという例は、スペースが入っているからとかそういう話だろうか?

POSIX用の名前空間を予約

POSIXという規格の立ち位置がどのくらいのものか未だによく分かっていないのだが、C++はこれに依存しても良いくらいの態度なのだろうか?

C99互換で導入された定義済みマクロ

フリースタンディング環境をマクロで識別できるのは便利そうだと思った。

通常関数の戻り値型推論

なんだかんだあまり使ってない気がする。普通の関数でもガンガン戻り値autoにしていくのもアリなんだろうか?採用された理由としては、戻り値型を後置する関数宣言が冗長だかららしい。確かに言われてみれば、戻り値型の後置なんてするくらいならautoにしている気がする。

ところで、「テンプレートによる戻り値型の置き換え失敗は、SFINAEではなくコンパイルエラー」という節の内容がよく分からなかった。どうしてSFINAEでなくコンパイルエラーになるとラムダ式戻り値が許可されるのだ?

数値リテラルの桁区切り文字

時々ちゃんと使っている。cpprefjpの記述だと「リテラルの先頭には使えない」ということだが、gccで実験したところ後ろも使えない。あと、区切り文字の連続も許されないようだ。

https://timsong-cpp.github.io/cppwp/n4950/lex.icon

規格を呼んでもちょっと明確な根拠が見つからないのだが。


今日摂取したコンテンツ。

https://m-sugaya.jp/manabu/article/eschool_report_senna.html

普通に読み物として面白かった。

Categories: