1

このように書かれたテンプレートを見てきました:

    template<typename T, bool = is_integral<T>::value, bool = is_floating_point<T>::value>
    struct helper {};

    template<typename T>
    struct helper<T, true, false>
    {
        typedef TypeAppropriateForThisSpecialization type;
    };

そして使用

typename helper<T>::type t;

どういう意味ですか?true-falseテンプレート型パラメーターの組み合わせが省略された場合、is_integralandによって評価されるという特殊化があるということですis_floating_pointか?

これは同じですか?(これは変数の宣言/定義です):

typename helper<T, true, false>::type t;

typename helper<T, is_integral<T>::value, is_floating_point<T>::value>::type t;
4

2 に答える 2

1
typename helper<T>::type t;
typename helper<T, is_integral<T>::value, is_floating_point<T>::value>::type t;

同じだ。

helper<T, true, false> は特殊化されています (そのため、ヘルパー <T> で使用されたときに T が整数であるが浮動小数点ではない場合)。

于 2013-08-21T19:21:48.173 に答える