Visual Studio 6 では完全に機能するテンプレート クラスがありますが、最新バージョンでは機能しません。
template<double B, double C>
class MyClass
{
double k(double x) const
{
x = fabs(x);
if (x < 1.0)
return ((2.0 - 1.5*B - C) * x*x*x) + ((-3.0 + 2.0*B + C) * x*x) + (1.0 - 0.33333333*B);
if (x < 2.0)
return ((-0.16666667*B - C) * x*x*x) + ((B + 5.0*C) * x*x) + ((-2.0*B - 8.0*C) * x) + (1.3333333*B + 4.0*C);
return 0.0;
}
};
error C2993: 'double' : illegal type for non-type template parameter 'B'
私はそれを理解しましたdouble
、テンプレートパラメータとして定数を使用することは許可されていない標準であり、VC++ は最終的に準拠しています。しかし、代わりに何を使用すればよいでしょうか? 式は繰り返し評価され、真のボトルネックです。実行時ではなくコンパイル時に定数を計算したいと考えています。