Hi Alex,

I think you misunderstood.

Jonathan's INT_MIN / INT_MAX do not return 1 or 16, respectively, for enums.

Quite the opposite, Jonathan pointed out that the existing values INT_MIN / INT_MAX can be stored in MyEnum, so 1 or 16 are _not_ the minimum or maximum possible value for the example.

 

This has often used practical applications:

MyEnum wolpertinger = eMonkey | eFish | eGoat | eFrog; // 30 > 16

 

e.g. if like in the example the enum values are given as power of 2 flags, which can be added/ORed.

 

Best,

Sebastian


 

-----Ursprüngliche Nachricht-----
Von: Alejandro Colomar via Std-Proposals <std-proposals@lists.isocpp.org>
Gesendet: Mo 10.07.2023 10:53
Betreff: Re: [std-proposals] std::enum_max and std::enum_min
An: std-proposals@lists.isocpp.org;
CC: Alejandro Colomar <alx.mailinglists@gmail.com>;
Hi Jonathan!

On Mon, Jul 10, 2023, 10:03 Jonathan Wakely via Std-Proposals <std-proposals@lists.isocpp.org> wrote:


On Mon, 10 Jul 2023, 08:15 Frederick Virchanza Gotham via Std-Proposals, <std-proposals@lists.isocpp.org> wrote:
Given the following enum:

enum MyEnum : int {
    eInvalid = 1,
    eFrog = 2,
    eGoat = 4,
    eFish = 8,
    eMonkey = 16,
};

I propose that:

    std::enum_max<MyEnum>

would evaluate to 16, and that:

    std::enum_min<MyEnum>

would evaluate to 1.
 
Why?
 
This is perfectly valid:
auto e = (MyEnum)INT_MAX;
And similarly for INT_MIN and 0 etc.
 
Heh, I learnt something new today.  I didn't know about this.  Would you mind pointing to where this feature is described in the standard?  I'm curious about it.
 
Regarding the proposal, I find it more readable and portable, since casting to an enum type in C doesn't do that magic.  But since the feature already exists, I wouldn't support yet another way of doing the same thing.
 
At the very least, I'd use this cast always within a template or macro called to_enum<type>(value) or to_enum(type, value).  But probably in a project-defined one, and not a standard one.
 
Cheers,
Alex
 
 
So you need to give some actual rationale for your proposal.
 
 
 
--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
-- 
 Std-Proposals mailing list
 Std-Proposals@lists.isocpp.org
 https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals