digitalmars.D.bugs - [Issue 8962] New: std.variant.Algebraic should support duplicate types
- d-bugmail puremagic.com (52/52) Nov 05 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8962
http://d.puremagic.com/issues/show_bug.cgi?id=8962 Summary: std.variant.Algebraic should support duplicate types Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P3 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: sandford jhu.edu --- Comment #0 from Rob Jacques <sandford jhu.edu> 2012-11-05 11:50:07 PST --- As std.variant.Algebraic implements a bounded discriminated union, it should allow for duplicate types. i.e. alias Algebraic!(string,string) A; // Construction using: this(T)(T value, size_t id) A a0 = A("First" ,0); A a1 = A("Second",1); // The type's id should be assessable by an ID member function that returns // a size_t switch(a0.id) { case 0: // The first int type break; case 1: // The second int type break; default: break; } // Similar to std.typecons.Tuple, member functions following the format of _# // should provide a streamlined way of testing the ID and retrieving // the Algebraic's value assert(a0._0 == "First"); // Which is equivalent to enforce(a0.id == 0); assert(a0.get!string == "First"); // Similar to actual unions and std.typecons.Tuple, named members should be // supported. Assignment to named members is allowed i.e. alias Algebraic!(int,"x", int,"y") B; B b = B(10,0); assert(b.id == 0); assert(b._0 == 10); assert(b.x == 10); b.y = 5; assert(b.id == 1); assert(b._1 == 5); assert(b.y == 5); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 05 2012