「変数テンプレート」の版間の差分
提供: C++入門
(相違点なし)
|
2015年2月22日 (日) 15:08時点における版
変数テンプレート(Variable Templates) とは、C++14で追加されました。従来まで関数テンプレートを使用していたコードが、場合によっては、変数テンプレートに置き換えできます。
読み方
- 変数テンプレート
- へんすうてんぷれーと
- Variable Templates
- ばりあぶる てんぷれーつ
概要
C++で変数を書くときに、重複のような形で書くことがありました。
int pi_int =3; int pi_double = 3.141592;
C++14の変数テンプレートを使用すると、以下の宣言が可能になります。
template < typename T > constexpr T pi = static_cast<T>(3.141592); int pi_int = pi<int>; int pi_double = pi<double>;
関数テンプレートでも同様のことができるが、関数呼び出しのため、 () が必要になります。
template < typename T > constexpr T pi() { return static_cast<T>(3.141592); } int pi_int = pi<int>(); int pi_double = pi<double>();
variable_templates1.cpp の例
ソースコード variable_templates1.cpp
/* * variable_templates1.cpp * Copyright (C) 2015 kaoru <kaoru@bsd> */ #include <iostream> template < typename T > constexpr T pi = static_cast<T>(3.141592); int main(int argc, char const* argv[]) { int pi_int = pi<int>; int pi_double = pi<double>; return 0; }
コンパイル
clang++36 -std=c++14 variable_templates1.cpp -o variable_templates1
実行例
% ./variable_templates1