3

次の関数を検討してください。

template<class T1, class T2, class T3 = /* SOMETHING */> 
T3 f(const T1& x, const T2& y);

T3の戻り値の型と等しくしたいT1+T2。C++11 でそれを行う方法は?

注: の結果は必要ありません。 のstd::common_type<T1, T2>::type実際の型がT1+T2必要operator+ですT1

4

1 に答える 1

13

通常の方法はdecltype、trailing-return-type です。

template<class T1, class T2> 
auto f(const T1& x, const T2& y) -> decltype(x+y);
于 2012-12-30T04:26:14.293 に答える