Frist Draft (in this forum): Enum Parameters

IchorDev zxinsworld at gmail.com
Wed Jul 31 08:15:31 UTC 2024


On Thursday, 25 April 2024 at 17:56:59 UTC, Quirin Schroll wrote:
> **Abstract**
> On function templates, allow `enum` to be used as a function 
> parameter storage class and a member function attribute. 
> Arguments binding to `enum` parameters must be compile-time 
> constants, as if template value parameters. With `auto enum`, 
> “compile-time-ness” is determined from argument (cf. `auto 
> ref`) and queried via a trait.

I have been dying to have this feature in my hands for since I 
first read about it nearly 2 years ago. The fact that this DIP 
keeps getting left in limbo is very disappointing.
I’m a library author, I write a lot of compile-time code, and in 
private I have written my own `std.traits`-style library before. 
This DIP solves one of my most longstanding frustrations with 
writing functions that have a compile-time optimised variant. The 
possibility of enhancing IES is also really exciting. I haven’t 
commented on this DIP here until now because I actually didn’t 
notice this thread.

My only real gripe with the DIP is that `isEnum` should only work 
for enum parameters. Having it check for enum membership will 
surely create bugs in generic code somewhere.


More information about the dip.development mailing list