以下の内容はhttps://faithandbrave.hateblo.jp/entry/20121011/1349943938より取得しました。


C++1y - 非型テンプレートパラメータの制限緩和に関する提案

N3413 - Allowing arbitrary literal types for non-type template parameters


C++11で導入されたconstexprによって、コンパイル時により多くのことができるようになりました。constexprでできるようになったものの一つに「constexprなコンストラクタを持ち、その他細かい条件を満たすクラスは、コンパイル時定数になることができる」というのがあります。

struct C {
    constexpr C(int v) : v(v) { }
    int v;
};

int main()
{
    constexpr C c(3);
    int ar[c.v]; // オブジェクトcも、そのメンバ変数vも定数なので、配列の要素数にできる
}

今回のこの提案は、このようなconstexprオブジェクトをテンプレート引数として渡せるようにしよう、というものです。

struct C {
    constexpr C(int v) : v(v) { }
    int v;
};

template <C c>
struct X {
    int ar[c.v];
};

これができるようになると、テンプレートの活用の幅が爆発的に広がるので、ぜひ入ってもらいたいですね。





以上の内容はhttps://faithandbrave.hateblo.jp/entry/20121011/1349943938より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14