ベースクラスの取得

メンバ変数でイテレート

ベースクラスのtypedefが子クラスで見えない

メタ関数まとめ

テンプレートパラメータのネスト

テンプレートで配列のサイズを取得する

CRTP

アクセサの話

template関係ないけど

offsetof

decltype

 

templateパラメータのintの値を取得する

暗黙的なテンプレートのインスタンス化を防ぐ

パラメーターパック

基本

template<typename… Args>
void Func(Args… args) // Args… で型が幾つかの意味
{
sizeof…() // パラメーターパックの要素数を取得
static_assert(sizeof…(args) < 4);
}

テンプレートパラメーターとしてパラメーターパックを渡す

 

パラメーターパックの拡張

パラメーターパックに共通の処理(関数)を適用できる。パラメーターパックの拡張ができるのは、C++14では()と{}内のみである。

 

完全転送

関数から内部関数を呼び出すときに引数を「そのまま」転送したい場合に使用する。

その方法としてl-value参照を使うとr-valueが渡されたときにビルドエラーになる。
inner(int& a, float& b){}
func(int a, float b){ inner(a, b) }
func(a, 1); // 1は渡せないためコンパイルエラー

参考: stack overflow