Given:
typedef std::integer_sequence<int, 0,4,7> allowed_args_t;
and:
template<int arg> void foo()
{
static_assert( /*fire if arg not in allowed_args_t!*/ )
}
How should I write that static_assert
to be as cheap as possible in compile-time?
I'm using C++17.
You might want to use:
template <int ... Is>
constexpr bool is_in(int i, std::integer_sequence<int, Is...>)
{
return ((i == Is) || ...);
}
typedef std::integer_sequence<int, 0, 4, 7> allowed_args_t;
template<int arg> void foo()
{
static_assert(is_in(arg, allowed_args_t{}));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With