digitalmars.D.bugs - [Issue 10490] New: Type enum in std.variant.Algebraic for final switches
- d-bugmail puremagic.com (47/47) Jun 27 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10490
- d-bugmail puremagic.com (15/15) Jun 27 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10490
http://d.puremagic.com/issues/show_bug.cgi?id=10490 Summary: Type enum in std.variant.Algebraic for final switches Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc This enhancement request is just an idea. Maybe better ideas can be found. Given the definition of an Algebraic like this: import std.variant; struct Foo {} void main() { alias T = Algebraic!(int, Foo); } I think it can be a good idea to generate automatically inside T an enum and a method like this: enum Type { int_, Foo; } property Type theType() const { return ...; } (Built-in types are keywords so they get a leading underscore.) So an Algebraic can be used in a final switch: import std.variant; struct Foo {} void main() { alias T = Algebraic!(int, Foo); auto t = T(5); final switch (t.theType) { case T.Type.int_: auto p = t.peek!int; break; case T.Type.Foo: auto p = t.peek!Foo; break; } } (Currently T.type is a TypeInfo, that can't be used in a final switch.) This allows a poor man's safe pattern matching on an Algebraic. An implementation of Issue 596 will allow to use a bit better pattern matching on an Algebraic. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 27 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10490 Diggory <diggsey googlemail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |diggsey googlemail.com This is related to Issue 10127 Personally I like that syntax where you use the actual type name rather than putting an underscore in front - it means you can easily use any type, not just ones that can be named. Algebraic could then have an alias to a particular instantiation of that TypeEnum template inside it rather than generating its own. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 27 2013