3

次の例のダミー関数を回避する方法はありますか?

template<class T1, class T2>
struct A {

    static T1 T1_ ();
    static T2 T2_ ();

    typedef decltype (T1_ () + T2_ ()) sum_type;
};

書きたいと思います

typedef decltype (T1+T2) sum_type;

しかし、T1andT2は変数ではなく型であるため、それは不可能です。私の上記の解決策は本当に最も簡単なものですか?

4

2 に答える 2

5

聖なる基準はstd::declvalまさにこの目的のために規定しています:

typedef decltype (declval<T1>()+declval<T2>()) sum_type;

<utility>ヘッダーを含めます。

于 2012-11-17T06:38:43.763 に答える
4

あなたはこれを行うことができます:

typedef decltype(*(T1*)0 + *(T2*)0) sum_type; 
于 2012-11-17T06:38:35.043 に答える