Neargye / magic_enum

Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
MIT License
4.76k stars 422 forks source link

Support for max/min Value within Enumeration. #324

Closed stellarpower closed 2 months ago

stellarpower commented 8 months ago

Hi,

Would be nice as an extra feature to be able to extract the entry that has the greatest/smallest value for the underlying type. I.e.

enum Suits{
    Clubs = -2,
    Hearts = 4,
    Spades = 7,
    Diamonds = -12
};

static_assert(magic_enum::max<Suits>() == Suits::Spades);

In an ideal world, most enums would start at 0 and go up by one each time, but not always the case.

Form the implementation, looks like some of this is happening already, so hopefully wouldn't be too much work to expose it externally.

Thanks

Neargye commented 8 months ago

Hi, As a solution, for now, I can recommend using

magic_enum::enum_values<Suits>().front() // min
magic_enum::enum_values<Suits>().back() // max
stellarpower commented 8 months ago

Great, thanks! So enum_values is guaranteed to be numerically ordered?

Neargye commented 2 months ago

Hi, yes, enum_values is guaranteed to be numerically