随着C++ 14中auto返回类型的引入,是否确实存在需要尾随返回类型的情况,或者在C++ 14和17中它已经完全过时了?

最佳答案

考虑...

auto f(int x)
{
    if (x == 2)
        return 3;
    return 2.1;
}

...这具有不明确的返回类型-intdouble。显式的返回类型(无论是带前缀的还是结尾的)都可以消除歧义,并将return参数强制转换为返回类型。

如果要在某些参数上使用decltypesizeof等,则尾随返回类型也特别有用:
auto f(int x) -> decltype(g(x))
{
    if (x == 2)
        return g(x);
    return 2;
}

关于c++ - C++ 14中的尾随返回类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39951084/

10-12 17:28