ドラフト C++14 では、変数テンプレートのサポートが追加されました。提案 ( N3651 ) の例はすべて定数 ( または のいずれconstexpr
かconst
) を示していますが、私が知る限り、これは必須ではありません。変数テンプレートの変数は変化することがありますか。たとえば、割り当てられますか?
template<typename T>
T magicVal = 42;
magicVal<int> = 0; // okay?
はい、変数テンプレートのインスタンスは第一級のオブジェクトです。事実上、テンプレート ID は単なる名前です。
static
「ボンネットの下」の変数テンプレートは、単一のメンバーを持つ昔ながらのクラス テンプレートとまったく同じです。
編集:constexpr
数学的実体を一般的に表すなど、定数のみに関して提案が書かれたようです。他のオブジェクトへの拡張は、審査委員会によって要求され、後付けとして追加されました。
これは本当に奇妙な制限です。最新のドラフトの第14章を読んでも、そのような兆候はありません。