C++自动返回类型

我写了一个看起来像这样的函数:

auto fn(auto x) {
    return x;
}

我用不同的参数调用了它两次:

std::cout << fn(3124) << std::endl;
std::cout << fn("hello world") << std::endl;

它工作正常,但我不明白为什么 - 我认为编译器推导出函数的常量返回类型 - int(由于第一次调用 - fn(3124))。似乎编译时生成的函数看起来像

template<typename T>;
T fn(T x) {
   return x;
}

我不明白为什么。请解释。

回答

auto fn(auto x)

是 C++20 版本的

template<class X>
auto fn(X x)

因此,它将为调用它的每个参数类型实例化,每个不同的参数类型都有不同的返回类型。该功能称为缩写函数模板


以上是C++自动返回类型的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>