0

C ++では、未定義の数値を表すために大きな値のペアを使用したいと思います。

void setUndefined(float& a) {
    a = set_undefined_value;
}

bool isUndefined(float a) {
    return a > is_undefined_value;
}

このアプローチをすべての数値タイプに使用したいので、テンプレート化されたコードから、テンプレートの方針に沿って考えていました。

template<typename T>
    class Undefined {
    public:
        static T set_undefined_value() {
            NOT_IMPLEMENTED_FOR_THIS_TYPE_YET;
        }
        static T is_undefined_value() {
            NOT_IMPLEMENTED_FOR_THIS_TYPE_YET;
        }
    };

    // Template specialization for all numeric types: ... 

すべての数値タイプに適した値のペアを見つけるにはどうすればよいですか?

たとえば、std :: neuro_limits :: max()テンプレートを使用する方法はありますか?

未定義の値をファイルに書き込んだ場合、それらはコンピューターやOS間で移植可能ですか?

4

1 に答える 1

2

floatとdoubleの場合、IEEE754のNaNに対応するビットパターンをそれぞれ選択します。次に、考えられるすべてのコンパイラで、考えられるすべての浮動小数点最適化を使用してnanをテストするためのマクロを作成できます。

符号付き整数の場合は、最も負の値(0x80 ...)を使用します

符号なし整数の場合は、最も正の値(0xFF ...)を使用します

于 2012-11-22T17:15:41.740 に答える