获取C++中运算符的返回类型
Get the return type of operators in 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
的成员函数。
通常的方法是decltype
和尾部返回类型:
template<class T1, class T2>
auto f(const T1& x, const T2& y) -> decltype(x+y);
相关文章:
- 为什么重载运算符可以返回其返回类型以外的其他内容?
- 错误:为"运算符 std::string {aka std::__cxx11::basic_string}"指定的返回类型<char>
- 运算符和返回类型是什么意思?
- 为什么类的赋值运算符的返回类型通常是非常量(而不是常量)引用?
- 如何确定三元运算符的返回类型?
- 如何使模板化运算符推断出正确的返回类型
- 根据运算符推断模板返回类型:结果
- 重写运算符的返回类型=
- 错误:"运算符="不匹配 |结构返回类型
- 使用 std::function 时选择自动返回类型而不是构造函数的调用运算符
- 条件运算符的返回类型和两阶段查找
- 如何使用内置返回类型重载运算符?
- 分配运算符的返回类型
- 为什么+运算符重载返回类型是类类型而不是整数
- 如何判断"->"运算符最终是否返回类型?
- 重载运算符:常量与非常量返回类型:任何性能差异
- 流运算符重载中的返回类型
- 模板类中运算符*的尾随返回类型
- 返回类型 ?:运算符和 C++ Primer 中的措辞
- 返回类型与返回类型(运算符++)不相同,也不协变