C ++ 14:decltype(auto)和“auto”作为返回类型有什么区别?

时间:2017-04-17 01:56:01

标签: c++ return c++14 auto decltype

我有一个像这样的简单程序:

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”不能工作时?但是,请提出建议。

非常感谢。

0 个答案:

没有答案