常规函数声明中,函数返回值类型都是在首位,例如:
int GetType();
C++11开始引入了尾置返回类型,将函数返回值类型放置在函数尾部(如果函数声明与实现写在一起,则放置在函数体之前),使用->符号隔开,并将首位的返回值使用auto关键字替代,例如:
auto GetType() -> int;
auto GetAge() -> int { return 18; }
任何函数的定义都能使用尾置返回类型,但是这种类型一般用于返回类型比较复杂的函数用于简化函数定义(比如数组指针)或者某些特殊的结构(比如lambda表达式),例如:
auto GetArrayPointer() -> int(*)[10]; // 返回值类型为大小为10的整型数组的指针
等价于
int (*GetArrayPointer())[10];
运用于lambda表达式:
[] (int a, int b) -> int { return a + b; }