hana's tutorialが、私はそのstatic_assert
作業が期待できるとしてか疑問読む:static_assert
template <typename Any>
auto switch_(Any& a) {
return [&a](auto ...cases_) {
auto cases = hana::make_tuple(cases_...);
auto default_ = hana::find_if(cases, [](auto const& c) {
return hana::first(c) == hana::type_c<default_t>;
});
static_assert(default_ != hana::nothing,
"switch is missing a default_ case");
// ...
};
}
文書は、明示的にdefault_
は、constexpr
オブジェクトではありませんので、と述べているとしても、過負荷の場合これらの型のoperator!=
はconstexpr
関数です。式のdefault_ != hana::nothing
は、引数の1つではないため、定数式にすることはできません。
チュートリアルは言う:私たちはdefault_
が非constexprの対象であっても、何もないとの比較 の結果にstatic_assertを使用する方法
お知らせ? Boldly、 Hanaは、コンパイル時に知られている情報が でランタイムに失われていないことを確認しています。明らかに、
default_
の場合があります。
チュートリアルでは、この段落で何が参照されていますか、その表現はどのように機能しますか?