「変数テンプレート」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「変数テンプレート(Variable Templates) とは、C++14で追加されました。従来まで関数テンプレートを使用していたコードが、場...」)
 
 
行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

関連項目