[Issue 8012] New: Add .length field to enums or provide helper function to Phobos

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue May 1 13:43:07 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=8012

           Summary: Add .length field to enums or provide helper function
                    to Phobos
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: trivial
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: andrej.mitrovich at gmail.com


--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2012-05-01 13:44:17 PDT ---
My use-case:

enum Foo
{
    x,
    z,
    y
}

enum Bar : Foo
{
    x = Foo.x,
    y = Foo.y,
    z = Foo.z
}

I really want to ensure that when I update Foo I will be forced to update Bar
(IOW get a compile-time error). If enums had a .length property then I could
easily add a static assert:

static assert(Foo.length == Bar.length);

As a workaround (if the proposal is rejected), we might add this template to
Phobos:

template EnumLength(E)
    if (is(E == enum))
{
    enum EnumLength = [__traits(allMembers, E)].length;
}

Used like so:
static assert(EnumLength!Foo == EnumLength!Bar);

I'd prefer having .length over instantiating templates, but either is fine for
me.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list