「変数テンプレート」の版間の差分
提供: C++入門
行7: | 行7: | ||
== 概要 == | == 概要 == | ||
+ | [[変数テンプレート]]の狙いは、パラメータ化された定数の定義と使用をシンプルにすることです。 | ||
+ | |||
C++で変数を書くときに、重複のような形で書くことがありました。 | C++で変数を書くときに、重複のような形で書くことがありました。 | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
− | int pi_int =3; | + | int pi_int = 3; |
int pi_double = 3.141592; | int pi_double = 3.141592; | ||
</syntaxhighlight> | </syntaxhighlight> |
2015年2月22日 (日) 15:22時点における最新版
変数テンプレート(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