如何在 C++11 之前模拟尾随返回类型的 decltype
How can I simulate decltype in a trailing-return-type before C++11?
如果我在 C++11 中有这个:
#include <iostream>
template <typename T1, typename T2>
auto add(T1 t1, T2 t2) -> decltype(t1 + t2)
{
decltype(t1 + t2) val = t1 + t2;
return val;
}
int main()
{
double a = 12.5;
int b = 4;
std::cout << add(a, b) << std::endl; // prints 16.5
}
我可以返回一个可以由编译器自动确定的类型。
由于我是C++新手,目前需要在 C++98 中实现这样的东西,有谁知道我会怎么做?
通常,在 C++98/C++03 中,为了简单起见,我们手动执行此操作:
#include <iostream>
template <typename R, typename T1, typename T2>
R add(T1 t1, T2 t2)
{
R val = t1 + t2;
return val;
}
int main()
{
double a = 12.5;
int b = 4;
std::cout << add<double>(a, b) << std::endl;
// ^^^^^^^^
}
(现场演示)
这很糟糕,这正是语言中添加decltype
和尾随返回类型的原因。
相关文章:
- c++ 11 带有 decltype 的尾随返回类型无法按预期工作
- decltype(auto) 是否使尾随返回类型过时?
- 如何使用非尾随 decltype 返回类型定义行外类模板成员函数
- clang 拒绝具有尾随 decltype 返回类型的模板调用是否正确,具体取决于其重载之一?
- 尾随返回类型中去 decltype 的原因
- decltype(function_name) 的返回类型是完全无用的
- 我可以使用自动或 decltype 代替尾随返回类型吗?
- 模板函数的返回类型未知,使用 decltype 时代码重复
- GCC 中的编译器错误,但在将 decltype 与具有尾随返回类型语法的模板化成员函数一起使用时没有 clang
- C++11 中的 decltype(auto) - 推断返回类型
- 使用decltype尾部返回类型专门化函数模板
- 字符串的decltype和const引用返回类型
- decltype用于递归变元函数模板的返回类型
- 如何使用decltype作为模板化类的返回类型的模板参数
- 自动返回类型哪个更好:decltype 或 std::common_type<>::type(如果可能)?
- 如何在 C++11 之前模拟尾随返回类型的 decltype
- 为什么返回类型中的decltype表达式必须在符号名称中损坏
- 使用"-> decltype"推断返回类型
- 使用decltype声明返回类型
- 使用c++ 14使用多个返回类型decltype(auto)