早起きに成功し、午前中外をぶらぶらすることで昼まで寝ないことに成功した。そして今、再び夜更かしして生活習慣が一瞬で崩れようとしている。馬鹿。
thunderbirdもbetterbirdもUI応答が悪いのでSylpheedというメーラーを使ってみた。なんと、メール読み込み中でもウィンドウが応答してくれる。なんて素晴らしい!!いや、なんでみんなその程度をやってくれないんだ。
なお、新規メールの受信処理が難しいので早速くじけようとしている。世の中にまともなメーラーはないのか?
祖母がたけのこご飯を持ってきた。美味しかった。
パクレットのウサちゃん捕獲ゲームを進めた。死ぬほど時間を溶かしている。マップがこんがらがったのでgraphvizでマップ間の繋がりを整理したりしてみた。こういう情報整理作業は思いのほか結構好きだったりする。1つのステージの中が壁で区切られたりしているので、それぞれの空間にA,B,Cとアルファベットを割り振ったりしているが、掘った結果として生まれる空間などの表し方にはなかなか困る。
色々頑張った結果、どうやら一番下の階層までたどり着いた。少なくともエレベータは全制覇したらしい。あとは地獄にいる大量のウサちゃんをどうやって捕まえるかだ。
プレイしていたら、細い巣穴の中でウサギが合体するとブロックが破壊されることに偶然気付いた。しかもこれを利用するステージがやはり当然のようにそこら中にある。パズルゲームにはこういう絶望を求めている。
巣穴Eの地獄ステージが、ウサギが眠る挙動を利用するチュートリアルになっているようだった。ちゃんとチュートリアルを踏むと出来ることが増えるの本当に好き。自分の頭が変革されている。
cpprefjpを読み進めた。「入れ子名の指定にグローバルスコープ :: を付加することを許可」~「ブロックスコープを持つstatic変数初期化のスレッドセーフ化」まで。
入れ子名の指定にグローバルスコープ :: を付加することを許可
どうやら当時コンパイラが既にそういう感じになっており、それで誰も困ってなかったので仕様として明文化したようだ。そういうケースもあるんだ。
依存名に対するtypenameとtemplateの制限緩和
typename自体をあまり分かっていなかったので軽く勉強した。どうやら「テンプレートを用いた型情報なんですよ」というのを明示しないと困るケースというのがあるらしい。
あんまり十分に理解したとは言えないので今後ちょっと復習しておきたい。どうやらC++20では一部ケースでtypenameが省略出来るようになったりしたらしい。付けやすくなったり外しやすくなったり。
任意の式によるSFINAE
どうやらここで便利になったっぽいことは察せられるが、SFINAEというものを未だに真面目に使ったことないからあんまりピンとこない。そもそも今どきはSFINAEよりもconceptとか使えという時代なのであんまり真面目に勉強しなくていいだろということにしている。
事前定義識別子__func__
デバッグ/エラー出力に良さそう。いいもの覚えた。
一様初期化
なんかコンストラクタ引数だけ渡す記法あるよなと思ってたけど、名前が結びついてなかった。あれが一様初期化だったのか。どこが一様なのか分からないが。
ローカル型と無名型を、テンプレート引数として使用することを許可
そもそもあんまりローカル型使わんよなあと思ったけど、もしかしてラムダ式もこの範疇だったりするのだろうか?
ラムダ式
みんな大好きラムダ式。自分も好き。戻り値の型推論でstd::decay
なるものが出てきた。初めて聞くライブラリだ。調べてもあまり明確に役割が分からないが、まあ関数として常識的な型を得る感じのものと言う風にふわっと受け取った。
ユーザー定義リテラル
これも自分の好きな機能。なんと数値リテラルを作るとき、整数値だけでなく文字列でも受け取れるらしい。すごい。また、普通のアルファベットで始まる文字列は予約されているらしい。そうだったんだ。
メンバ関数の左辺値/右辺値修飾
全く初めて知る機能だった。こんなこと出来たんだ!!!
ブロックスコープを持つstatic変数初期化のスレッドセーフ化
あまり真面目にマルチスレッドプログラミングをしてないのであれなのだが、なるほど便利そうだと思った。
Categories: 未分類