Support creating util::flag_set directly from representation type

This commit is contained in:
Nikita Lisitsa 2022-05-21 19:51:43 +03:00
parent 98b8a324d0
commit ddd67b79f3

View file

@ -19,7 +19,11 @@ namespace psemek::util
flag_set(flag_set const &) = default;
template <typename ... Flags>
flag_set(Repr const & repr)
: value(repr)
{}
template <typename ... Flags, typename = std::enable_if_t<(std::is_same_v<Flags, Flag> && ...), void>>
flag_set(Flags const & ... flags)
: value{((1 << static_cast<underlying_type>(flags)) | ...)}
{}