![](/img/trans.png)
[英]C++11 trailing return member function using decltype and constness
[英]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
,这正是为什么在语言中添加了decltype
和尾随返回类型的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.