こんにちは。田原です。 クラス・テンプレートの部分特殊化や関数テンプレートのオーバーロードはある程度範囲の型に対してテンプレートを定義します。その「範囲」をかなり自由に指定することができます。今回はそれによく使われる幾つかの部品と、範囲指定するためにたいへん有用なSFINAEの利用方法について解説します。 1.constexprでコンパイル時定数を定義する C++11でconstexprキーワードが追加されました。これは部分特殊化やオーバーロードを積極的に使う場面でもよく使われます。他の使い方もありますが、今回は部分特殊化やオーバーロードで使われる比較的簡単な使い方について説明します。 まず、constexprは、「constant expression (定数式)」の略語だそうです。 そして、constexprは、グローバル変数、ローカル変数、staticメンバ変数の初期化付き宣言に指定