version(StdDoc)
    H. S. Teoh 
    hsteoh at quickfur.ath.cx
       
    Mon Nov 26 17:51:52 UTC 2018
    
    
  
On Sun, Nov 25, 2018 at 09:53:50PM +0000, Stanislav Blinov via Digitalmars-d-learn wrote:
> On Sunday, 25 November 2018 at 21:38:43 UTC, H. S. Teoh wrote:
> 
> > Actually, I just thought of a way to do this with the existing language:
> > use a struct to simulate an enum:
> > 
> > 	struct E {
> > 		alias Basetype = int;
> > 		Basetype impl;
> > 		alias impl this;
> > 
> > 		enum a = E(1);
> > 		enum b = E(2);
> > 		version(Windows) {
> > 			enum c = E(3);
> > 		}
> > 		version(Posix) {
> > 			enum c = E(4);
> > 			enum d = E(100);
> > 		}
> > 	}
> 
> Heh, that can work in a pinch. Disgusting though :D
I dunno, given that D structs are supposed to be "glorified ints"
according to TDPL, I see enum declarations more-or-less as a shorthand
for structs of the above sort. :-D  Much like template functions / enums
/ etc. are shorthands for eponymous templates.
> > It's not 100% the same thing, but gets pretty close, e.g., you can
> > reference enum values as E.a, E.b, you can declare variables of type
> > E and pass it to functions and it implicitly converts to the base
> > type, etc..
> > 
> > There are some differences, like cast(E) won't work like an enum...
> 
> It should, you can cast values of same sizeof to a struct.
[...]
Haha, didn't know that.
T
-- 
Dogs have owners ... cats have staff. -- Krista Casada
    
    
More information about the Digitalmars-d-learn
mailing list