在函数声明中使用 - >

6 c++ c++11

可能重复:
函数声明后的" - >"是什么?

我刚刚使用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的返回类型,则必须使用此表单; 但是,正如您所指出的那样,在许多情况下(包括这一个)您根本不需要指定.