まずは普通のクラスの静的変数の宣言と実装の仕方。
class C1
{
static const int variable;
};
const int C1::variable = 1;
ここはまだ、直観的で間違えることはない。
接ぎはテンプレートクラスの静的メンバ変数。
template< typename T > class C2
{
static const int variable;
};
template< typename T > const int C2< T >::variable = 2;
template が最初にきて、C2 の後のテンプレートの型指定をする。個人的には、この型指定を忘れることが多い。
C++17 以降だと、宣言文に直接定数を書いても大丈夫になった。
template< typename T > class C3
{
static const int variable = 3;
};
これだったら、忘れにくくて書きやすい。ただ、C++17 でも、これが出来るのは const のある定数だけ。const 無しは以前のように別途、実装する必要がある。
セコメントをする