2024/4/30(火)

cpprefjpを読み進めた。「overrideとfinal」から「auto」まで。

overrideとfinal

いつも「継承より合成」の精神でインターフェース以外の形での継承を全く使っていないので、overrideは使うがfinalはわざわざ使うことがない。メンバ関数だけでなくクラスにも指定できるのは初めて知った。

nullptr

普通に使ってるやつだが、C++11まで無かったらしい。具体的な困る例としてテンプレートはなるほどと思った。

noexcept

あんまり真面目に関数に付けることが無いのだが、ライブラリ開発では使った方が良さそう。演算子もあるのを初めて知った。

long long型

int型の32bitがそうであるようにlong longの64bitも実装定義なのだと思っていた。64bit以上は保証されてるんだ!!そして、64bitぴったりであることは保証しないらしい。面白い。

friend宣言できる対象を拡張

friendは極力使わない方が良いのだからなんとも。しかし、class Derived : Base<Derived>の形式のケースは面白いかもしれない。

extern template

コンパイル時間を短くしたいという動機は分かるが、わざわざこんな面倒なことはしたくないなあというのが率直な感想。

decltype

一部コンパイラの独自拡張typeofとの違いの話が面白かった。単に式として評価した場合の値の型ではないらしい。単に変数だけ入れればそれの型になる。確かに、int aとかあったとして、式としてaの型を求めればint&とかになってしまうが、明らかにdecltype(a)と書いたときに期待しているのはint型だろう。「宣言時の型(declaration type)」でdecltypeらしい。初めて知った。

constexpr

みんな大好きconstexpr。登場時は制御文全部封じられていたレベルらしい。今はよく進化したもんだ。登場時のconstexprの制約(というか出来ることの方)を把握していると歴史が分かりやすいかもしれない。リテラル型という微妙に聞きなれない概念が出てきたが、どうやら今はdeprecatedになった概念らしい。

numeric_limitsの改良という明確な目的があったとは知らなんだ。応用範囲がかなり広い機能だと思うのだが。

char16_tとchar32_t

cpprefjpを読むとUTF-16/UTF-32符号化形式の文字型と書いてあるのだが、以下の記事を久しぶりにちゃんと読んでみたところ、どうやら保証はないらしい。なんで????

https://qiita.com/yumetodo/items/54e1a8230dbf513ea85b#char16_tchar32_t%E5%9E%8B%E3%81%AE%E8%BF%BD%E5%8A%A0

あとcodecvtとかいうのがあるのもほぼ初めて認識した。前読んだ時は読み飛ばしていた。なんで空気なのかと言えば、単に仕様も実装もカスだからなようだ。

例のQiitaの記事を改めてちゃんと読む良い契機になった。

auto

今はもうこれなしのC++は考えられない。これが出るまでイテレータの型を自分で書いてたってマジかよ、という気持ちになる。ラムダ式と同じC++バージョンで導入されたのにはとても納得した。


パクレットのウサちゃん捕獲ゲームを進めた。ついに子ウサギが120匹に達したのだが、柱の部屋の進捗メーターが半分にも達していない。このゲーム、本当に何???


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

https://gigazine.net/news/20240430-engineer-build-gpu

GPUを自作した話。いいなあ。挑戦したい。tinytapeoutというサービスがあるというのは知見だった。チップ製作はやりたいけど研究室の研究の一環とかGoogleの若者支援とかそういうのじゃなくて、自分の金で自己責任でやりたいのよ。


今週の胎界主を読んだ。レックス、会話はするようでひとまず安心。しかしあまりまともに受け止める気はなさそう。

「俺は息子まで殺したのに…」もはやレックスの精神ボロボロすぎる。自分は息子まで殺したのに日奈子は見逃せなんて通らねえぞ、という主張なんだろうが、ことここに至ってはだからなんだ過ぎる。

影男の影縫いに一応久松も乗ったのか。説得の線は完全に消えたか?だがまだどう転ぶか読めない。レックスを殺せるとして殺す決断ができるのか厳しい感じもする。

Categories: