我在MSDN文章中看到过类似于以下内容的函数定义:
auto incr(int i) -> int {return i+1;}
它可以与VS2012一起编译并正常工作。有人可以解释它的语法吗?它是一个命名的lambda表达式吗?在“ C ++编程语言,第四版”中的哪里描述?为什么有人会这样写,而不是使用简单的形式:
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;
}
由于m
和n
参数声明之后才会宣布,将返回类型后的参数声明而不是之前帮助模板代码。在非模板代码中,auto
当可以推断出返回类型时,使用C ++ 14可能会变得更加有用。在C ++ 11中,它实质上是非模板代码的样式选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句