ExerciseC++読書会 vol.10
https://scrapbox.io/files/6983353470707df9ae4835e5.png
開催日時
2026年7月14日(火) 19:30~21:00
開催URL
参加人数
3人
ウォーミングアップ
パズル20
code:cpp
// Monster moved
// Jormungandr moved
// ↑間違い
std::moveが抜けててコピーになってる
意図しない変換(rvalueなのにconst lvalue参照)が発生する
コンストラクタにexplicitを付けると抑制できる
ただ、何も考えずにexplicitをつけて回るとコピーできなくなったことがある
基底クラスはメンバの一つ
rvalueは中身とっていっていいもの
lvalueをrvalueに暗黙的には変換できない
const rvalue参照に意味はある?
ないです
ライブラリによっては誕生させれそうな場合deleteで呼び出せないようにしている
そもそも3種類しかないので直交しない
言語的にもっと整理できそう
パズル21
code:cpp
// 4
// 4
// 8
// ↑間違い
文字列と勘違いしてヌル文字分足してた
code:cpp
// 配列の要素数を引数にとる場合(いつも記述に悩むやつ)
void serialize(char(& characters)3) // 別解
void serialize(std::type_identity_t<char(&)3> characters) typeof
Cで使える
decltypeと似た感じで使えるが、こちらは式以外に型も指定できる
C++にはtypeof来ないだろうが便利なので欲しい
パズル22
次回ここから
あと2回くらいで読み終わりそう
お悩み雑談室
次読む本の話
マルチバイト文字の例