我有一个像这样的简单程序:
template<class T1,class T2>
decltype(auto) Add(T1&& t1,T2&& t2)
{
return t1+t2
}
int main(){
int i=Add(1,2);
return 0;
}
用clang编译++ -std = c ++ 14。我发现我可以删除“decltype”关键字,如下所示:
template<class T1,class T2>
auto Add(T1&& t1,T2&& t2)
{
return t1+t2;
}
int main(){
int i=Add(1,2);
return 0;
}
仍然没问题。所以我的问题是,在不同情况下,“decltype(auto)”和“auto”何时不同?我只是猜测“decltype(auto)”是针对更复杂的情况设计的,当“auto”不能工作时?但是,请提出建议。
非常感谢。