获取C++中运算符的返回类型

Get the return type of operators in C++?

本文关键字:返回类型 运算符 C++ 获取      更新时间:2023-10-16

考虑以下函数:

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的成员函数。

通常的方法是decltype和尾部返回类型:

template<class T1, class T2> 
auto f(const T1& x, const T2& y) -> decltype(x+y);