diff --git a/include/ircd/json/tuple/keys.h b/include/ircd/json/tuple/keys.h index 4be48351a..7b7660135 100644 --- a/include/ircd/json/tuple/keys.h +++ b/include/ircd/json/tuple/keys.h @@ -60,17 +60,18 @@ template struct ircd::json::keys::include :selection { - constexpr include(const vector_view list) + include(const vector_view &keys) :selection{0} { - for(const auto key : list) + for(const auto &key : keys) selection::set(key, true); } - constexpr include(const std::initializer_list list) + template + consteval include(list&&... keys) :selection{0} { - for(const auto key : list) + for(auto&& key : {keys...}) selection::set(key, true); } @@ -86,17 +87,19 @@ template struct ircd::json::keys::exclude :selection { - constexpr exclude(const vector_view list) + exclude(const vector_view &keys) :selection{} { - for(const auto key : list) + for(const auto &key : keys) selection::set(key, false); } - constexpr exclude(const std::initializer_list list) + + template + consteval exclude(list&&... keys) :selection{} { - for(const auto key : list) + for(auto&& key : {keys...}) selection::set(key, false); }