这两个函数有什么不同?
auto func(int a, int b) -> int;
int func(int a, int b);
auto func(int a, int b) -> int;
int func(int a, int b);
除了符号表示外,在上述情况下没有任何区别。当您想要引用一个或多个参数来确定函数的返回类型时,替代函数声明语法变得很重要。例如:
template <typename S, typename T>
auto multiply(S const& s, T const& t) -> decltype(s * t);
(是的,这只是个愚蠢的例子)
这两个声明没有实用差别,两个函数都返回一个int
。
C++11的尾置返回类型在带有template
参数的函数中非常有用,在这种情况下,返回类型直到编译时才知道,比如这个问题:如何正确编写尾置返回类型?
它们使用不同的语法,只有其中一个在C++11之前的版本中是有效的。除此之外,在您提出的问题中,这两个函数声明之间没有任何区别。
friend
函数如何工作,因为这些函数不能在类定义之外定义)。 - Dietmar Kühldecltype
类型会是一个很好的特性...但是我们不能拥有一切 ;) - leemes