3
考虑以下功能:获取C++运算符的返回类型?
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
成员函数。
你在函数中使用'T3'可言,还是确定要删除多余的参数,只是让它回归直接键入? – chris
我的观点是,如果你再次需要'T3',你可以使用'decltype(std :: declval()+ std :: declval ())'。 –
chris
@chris您应该将您的评论发布为答案。如果'f'的主体中需要'T3',它可以避免重复的代码。 –