与えられたテンプレート
template <int n>
void f(){...};
次のようにすることで、特定の値に特化できることを知っn
ています。
template <>
void f<2>(){...};
しかし、私がそれをすべてのポジティブに特化することを可能にする方法はありますn
か?
私は次のことを考えました
template <int n>
void f<n>(){
int dummy[n]; //invalid for n < 0
...
};
したがって、n<0
このコードは無効であり、コンパイラは前の定義に頼ります。残念ながら、私が得るのはredefinition of 'void f<n>()'
エラーだけです。
注:これはおそらく標準ではサポートされていないと思います。この効果を達成するための方法(おそらくテンプレートメタプログラミング)がないかどうかを尋ねています。