2008-09-02

型の選択

これはLoki(というかModern C++ Design)からのパクリ。

// 型選択
// flagが真ならResultがT1、偽ならResultがT2となるクラステンプレート
template <bool flag, typename T1, typename T2> struct Select {
typedef T1 Result;
};
template <typename T1, typename T2> struct Select<false, T1, T2> {
typedef T2 Result;
};

// 整数の表現形式を選択する
template <typename X, typename U, typename S2, typename S1, typename SA>
struct SelectNegativePresentation {
typedef typename Select<
is_unsigned<X>::value, U,
typename Select<has_sign_and_abs_part_unsafe<X>::value, SA,
typename Select<
is_1s_complement_unsafe<X>::value, S1, S2
>::Result
>::Result
>::Result Result;
};


こいつを使うと、型の最大最小がわかるはず…

0 件のコメント: