「非常に読みやすい」「エレガントな」コードのこの「美しい」例に遭遇しましたが、それを理解するのに苦労しています:
struct S {
[[noreturn]] virtual inline auto f(const unsigned long int *const)
–> void const noexcept;
};
これが私が理解していることです(間違っている場合は修正してください):
f()
のメンバー関数ですS
virtual
- 派生クラスによってオーバーライド可能inline
- コンパイラは、通常どおり呼び出すのではなく、呼び出し用のコードを生成しようとする必要がありますf
const
S
- 関数はのメンバーを変更できませんnoexcept
- 関数は決してスローしません (スローできないか、スローできない)- パラメータ:
const
へのポインタconst unsigned long int
auto .... -> void
- 接尾辞の戻り型void
[[noreturn]]
- それは決してありませreturn
ん
ここに私の主な懸念事項があります:
- 関数が として宣言されている場合、呼び出し元に戻る
[[noreturn]]
ことはありません。では、どのように戻り値の型を持つことができvoid
ますか? とにかく、この関数の戻り値の型のポイントは何ですか? - このコードは、たとえば
int
の代わりにコンパイルされますか?void
- そのような関数の実用的な用途は何ですか? 例外をスローするには?
- この関数の実行が終了した後 ( の後 )、コードの流れはどこに行き
}
ますか?
このコードを VS2013 Preview で実行することができなかったので、これらの機能はまだ実装されていなかったと思います。
とても気になるので、どなたか教えていただけると助かります!乾杯