什么是 `auto classMemberFunction()->void {}` 签名?

what's `auto classMemberFunction()->void {}` signature?

我在 an article 中看到过类似的代码:

#include <iostream>

class MyClass {
public:

  auto myFunction(int i)->void {
    std::cout << "Argument is " << i << std::endl;
  }
};

void main() {
  MyClass myClass;
  myClass.myFunction(4);
}

程序正确打印输出 Argument is 4,但我不明白 class 函数成员的签名以及它与通常的签名有什么区别.什么时候使用这个不同的签名而不是 void myFunction(int i)?

这是 C++11 中引入的尾随 return 类型语法的(滥用)用法。语法是:

auto functionName(params) -> returnType;
auto functionName(params) -> returnType { }

它与左侧带有 return 类型的经典函数声明相同,除了尾部类型可以使用函数签名引入的名称,即:

T    Class::function(param);      // No particular behaviour
auto Class::function(param) -> T; // T can use Class::Foo as Foo, decltype(param), etc.

虽然在这种情况下,除了一致性之外没有任何意义。