我遇到了这个“高度可读”和“优雅”代码的“美丽”示例,但我在理解它时遇到了麻烦:
struct S {
[[noreturn]] virtual inline auto f(const unsigned long int *const)
–> void const noexcept;
};
这是我的理解(如果我错了,请纠正我):
f()是的成员函数Svirtual- 可以被派生类覆盖inline- 编译器应该尝试为调用生成代码f而不是正常调用它const- 该功能无法更改任何S成员noexcept- 函数永远不会抛出(不能抛出或不允许抛出)- 参数:指向a的
const指针const unsigned long int auto .... -> void- 后缀返回类型void[[noreturn]]- 它永远return不会
以下是我的主要担忧:
- 如果一个函数被声明为
[[noreturn]],它永远不会返回给它的调用者;那么它怎么会有返回类型void呢?无论如何,这个函数中的返回类型有什么意义? int这段代码会用而不是void例如编译吗?- 这样的功能有什么实际用途?抛出异常?
- 该函数执行完毕后(after ),代码流向何方
}?
我无法让这段代码在 VS2013 Preview 上运行,所以我猜这些功能还没有实现。
我对此非常好奇,所以如果有人能解释一下,我将不胜感激!干杯