可能重复:
函数声明后的" - >"是什么?
我刚刚使用new auto
关键字遇到了以下C++函数示例,我希望有人可以帮助我理解语法的含义.
template <class T, class U>
auto add(T t, U u) -> decltype(t + u);
auto f = [](int a, int b) -> int {
return a*b;
};
Run Code Online (Sandbox Code Playgroud)
具体来说,我->
对函数签名中的用户感到困惑,我希望这些都写在as中
template <class T, class U>
auto add(T t, U u)
{
decltype(t + u);
}
auto f = [](int a, int b){
return a*b;
};
Run Code Online (Sandbox Code Playgroud)
什么是->
运营商在那里做,我在哪里可以了解更多有关此语法?
Mik*_*our 13
什么是
->
运营商在那里做什么?
这是一个尾随的返回类型.代替:
int f();
Run Code Online (Sandbox Code Playgroud)
你可以等同地写:
auto f() -> int;
Run Code Online (Sandbox Code Playgroud)
如果返回类型取决于函数参数类型,则需要使用此表单; 参数在声明之后才可用:
decltype(t+u) add(T t, U u); // Error: uses `t` and `u` before they're declared
auto add(T t, U u) -> decltype(t + u); // OK
Run Code Online (Sandbox Code Playgroud)
另外,如果要指定lambda的返回类型,则必须使用此表单; 但是,正如您所指出的那样,在许多情况下(包括这一个)您根本不需要指定.