替代函数语法差异

时间:2012-12-30 02:08:53

标签: c++ c++11 declaration function-declaration

这两个功能有什么区别?

auto func(int a, int b) -> int;

int func(int a, int b);

3 个答案:

答案 0 :(得分:10)

除了符号之外,上述情况没有任何区别。当您想要引用一个或多个参数来确定函数的返回类型时,替代函数声明语法变得很重要。例如:

template <typename S, typename T>
auto multiply(S const& s, T const& t) -> decltype(s * t);

(是的,这是一个愚蠢的例子)

答案 1 :(得分:5)

这两个声明之间没有任何有用的区别;这两个函数都返回int

C ++ 11的尾随返回类型对于带有template参数的函数很有用,其中返回类型在编译时才知道,例如在这个问题中:How do I properly write trailing return type?

答案 2 :(得分:2)

他们使用不同的语法,只有其中一个在C ++ 11之前的C ++版本中有效。除此之外,您在问题中显示的两个函数声明之间没有差异。