#include <iostream>
#include <type_traits>
#include <ranges>
#include <algorithm>
namespace utils
{
template <typename Enum>
concept IsEnum = std::is_enum_v<Enum>;
template <IsEnum Enum>
bool is_any_of(Enum value, std::initializer_list<Enum> list)
{
return std::ranges::any_of(list, [value](Enum e) { return e == value; });
}
template <IsEnum Enum, typename... Args>
bool is_any_of(Enum value, Args... args)
{
return ((value == args) or ...);
}
} // namespace utils
enum class Color
{
Red,
Green,
Blue,
Yellow
};
int main()
{
Color myColor = Color::Green;
//if (utils::is_any_of(myColor, {Color::Red, Color::Green, Color::Blue}))
if (utils::is_any_of(myColor))
{
std::cout << "myColor is one of Red, Green, or Blue." << std::endl;
}
else
{
std::cout << "myColor is not one of Red, Green, or Blue." << std::endl;
}
return 0;
}