C++11标准中的函数返回类型后置语法,可以让返回复杂类型的函数声明更加清晰易读。
auto foo()->int
{return 42;
}
以上代码中的函数声明等同于int foo(),只不过采用了函数返回类型后置的方法,其中auto是一个占位符,函数名后->紧跟的int才是真正的返回类型。
在返回类型比较复杂的时候,比如返回一个函数指针类型,返回类型后置可能会是一个不错的选择,例如:
int bar_impl(int x)
{return x;
}typedef int(*bar)(int);
bar foo1()
{return bar_impl;
}auto foo2()->int(*)(int)
{return bar_impl;
}int main() {auto func = foo2();func(58);
}
使用传统函数声明语法的foo1无法将函数指针类型作为返回类型直接使用,所以需要使用typedef给函数指针类型创建别名bar,再使用别名作为函数foo1的返回类型。而使用函数返回类型后置语法的foo2则没有这个问题。