gpt4 book ai didi

c++ - 你能解释一下这个 C++ 函数定义的语法吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:17 25 4
gpt4 key购买 nike

我在 MSDN article 中看到了函数定义类似这样:

auto incr(int i) -> int {return i+1;}

它在 VS2012 上编译并运行良好。有人可以解释它的语法吗?它是一个命名的 lambda 表达式吗?在“The C++ Programming Language, 4th Edition”中哪里描述了它?为什么有人会这样写,而不是使用简单的形式:

int incr(int i) {return i+1;};

最佳答案

它是尾随返回类型。尽管所有函数声明都允许使用它,但它主要在定义函数模板时有用。从函数模板返回的类型通常取决于某些表达式的结果,并且有相关类型的变量来表达它们是有帮助的,例如

template <typename M, typename N>
auto multiply(M const& m, N const& n) -> decltype(m * n) {
return m * n;
}

由于 mn 仅在参数声明后声明,因此将返回类型放在参数声明之后而不是 before 有助于模板代码。在非模板代码中,当可以推导出返回类型时,auto 的使用对于 C++14 可能会更有用。在 C++11 中,它本质上是非模板代码的一种风格选择。

关于c++ - 你能解释一下这个 C++ 函数定义的语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21105256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com