More Related Content
More from 京大 マイコンクラブ (20)
Constexprとtemplateでコンパイル時にfizz buzz
- 2. 自己紹介
• KMC ID:dtyazsk
• 所属:理学部1回(数学系志望)
• 普段やってること:プログラミング/DTM/お絵描き
• 趣味:弾幕STG(東方project/怒首領蜂シリーズ)/音ゲー(エニビ/BMS)
• よく使うプログラミング言語:C++
• twitterやってます(@DtYaZsK)
- 7. templateとは
• C++の機能の一つ
• クラスと関数で使える
• クラスまたは数値を引数に取る
• 数値にはコンパイル時整数型定数のみ
• boolは整数型なのでとれる
• 静的に展開しそれぞれクラスを作る
• 例えば右のようなクラスがある
• Tmp_class<double,7>でこのようになる
• 明示的に渡してなくとも
推測できるなら推測してくれる
- 12. リテラル型について
• intとかdoubleのような型はリテラル型の元となる
• ポインタ(全て)や参照型(リテラル型のみ)もリテラル型となる
• 以下の条件を満たすクラス(または構造体)はリテラル型となる
• trivialデストラクタを持つ
• ユーザー定義デストラクタを作らなければいい話
• 非staticなメンバの初期化子とコンストラクタ呼び出しが全て定数式
• aggregateであるか
またはコピーでもムーブでもないconstexprコンストラクタが1つ以上
• aggregateとはユーザー定義コンストラクタも非staticメンバに初期化子への初期化子も
基本クラスも仮想関数もなく全てのメンバがpublicな配列またはクラスのこと
• 非staticメンバと基底クラスが全てリテラル型
• constexpr定数にできる
- 35. 参考資料その1
• TECHSCORE BLOG
C++で静的配列の要素数を求めるテンプレート関数
• http://www.techscore.com/blog/2013/02/08/how-to-calculate-array-length-in-cand-cpp/
• 本の虫
aggregateと初期化リストの不思議
• http://cpplover.blogspot.jp/2010/09/aggregate.html
• ボレロ村上 – EniyGmaA Code
リテラル型クラスの条件、および「中3女子でもわかる constexpr」の訂正
• http://d.hatena.ne.jp/boleros/20130718/1374155184
- 36. 参考資料その2
• 中3女子でもわかる constexpr
• http://www.slideshare.net/GenyaMurakami/constexpr-10458089
• 中3女子が狂える本当に気持ちのいい constexpr
• http://www.slideshare.net/GenyaMurakami/constexpr-11509325
• Constexpr 中3女子テクニック ー実践と濫用そしてC++14へ
• http://www.slideshare.net/GenyaMurakami/constexpr-23355469