次のことを行うより良い方法はありますか?
次の関数を持つベクトル クラスがあります。
template <typename T>
bool Vector3<T>::IsUnitVector() const
{
return IsAlmostEqual(this->GetLength(), One<T>::Value());
}
T は float または double になる可能性があるため (明示的なテンプレートのインスタンス化を使用して、これらの型のみがサポートされていることを確認しています)、正しい型で値 1 を返すヘルパー クラスを作成する必要がありました。
template <typename T>
struct One
{
static T Value();
};
template <>
struct One<int>
{
static int Value() { return 1; }
};
template <>
struct One<float>
{
static float Value() { return 1.0f; }
};
template <>
struct One<double>
{
static double Value() { return 1.0; }
};
Zero
他の比較のためにクラスも作成する必要があることに気付くまで、これはそれほど悪くはありませんでした。だから私の質問は、これを達成するためのより良い方法はありますか?