考虑以下函数:
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
和 trailing-return-type:
template<class T1, class T2>
auto f(const T1& x, const T2& y) -> decltype(x+y);
关于c++ - 获取 C++ 中运算符的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14088308/