C++20 コア言語機能読書会vol.15
開催日時
2022年10月5日(水) 21:00~22:30
開催URL
参加人数
4人
ウォーミングアップ
WinRT
WinUI 3.0
おススメ
4.1 autoによる関数テンプレートの簡易定義
これにより関数とラムダ式との差がなくなった
4.2 typename の省略
自明なケースはtypenameが省略できるようになった
4.3 クラス型の非型テンプレート引数
CTADってなに?
クラステンプレートのテンプレート引数推論
4.4に説明が出てきたが、初出はここ
文章入れ替えたのかな?
非型テンプレート
「-> fixed_str<N>;」は推論ガイド
これを応用して文字列を1文字ずつASSERTにかけることができる
文字列がルールに則っているかを判別する条件付きコンパイルに応用できる
4.4 集成体テンプレートの実引数からのテンプレート引数推論
クラステンプレートのテンプレート引数推論(CTAD)
「std::vector<int> vec = { 1, 2, 3};」と書いていたものを「std::vector vec = { 1, 2, 3};」と書けるようになる
推論ガイドがいらなくなった
「vec3 = {1, 2, 3};」
こんな書き方はない!
「vec3{1,2,3};」か「vec3 v = {1,2,3};」という書き方が正解
aggregate
{}省略できてしまうとstruct Cのメンバ変数を入れ替えた時でもコンパイルが通ってしまいそう
「D d2」を配列にすることはできる?
できない。将来的にもできない
これなら配列にできた
中途半端に初期化の要素が無くてもコンパイルが通った。コンパイラ屋さんも大変だ…
4.5 エイリアステンプレートのCTAD
次回ここから
お悩み雑談室