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