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尾随返回类型:

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