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

标签 c++ c++11 operator-keyword return-type typetraits

考虑以下函数:

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/

相关文章:

c++ - 指向 std::string 中特定字符的迭代器

c++ - 在 clock_gettime() 中使用 _COARSE 变体仍然调用 sys_clock_gettime() 系统调用

c++ - 如何在 C++ 中声明自引用容器?

c++ - 带有括号运算符重载的可调整大小数组类的前两个元素中的垃圾值

jquery - 滚动到另一个div的顶部后如何显示一个div?

c++ - 检查数字是否为质数的更好方法是什么?

c++ - std::enable_if 有条件地编译一个成员函数

c++ - 如何使用 C++11 std::move 语义。我尝试编写代码,得到的输出有些不同

c++ - 为什么这段代码会使 VC++ 编译器崩溃?

c++ - 如何修复 : binary = :no operator exists which takes a RHS of const & fullName