constexpr inline accessmode operator & (accessmode x, accessmode y) { return static_cast<accessmode>(underlying_cast(x) & underlying_cast(y)); }
inline std::ostream& operator<<(std::ostream& out, rdpdr::PacketId const & e) { return out << +underlying_cast(e); // '+' for transform u8/s8 to int }
void encode_enum(Enum e, Context& ctx, std::false_type /*is_enum_reflectable*/) { yaml::dump(underlying_cast(e), ctx); }
YAML::Node enum_to_yaml(Enum e, Context& ctx, std::false_type /*is_enum_reflectable*/) { return to_yaml(underlying_cast(e), ctx); }
decltype(*enum_option<E>::value.begin()) enum_to_option(E e) { return *(enum_option<E>::value.begin() + underlying_cast(e)); }