[Issue 10951] New: EnumMembers returns duplicate members for enums

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Sep 2 06:26:10 PDT 2013


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

           Summary: EnumMembers returns duplicate members for enums
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Optlink
        AssignedTo: nobody at puremagic.com
        ReportedBy: andrej.mitrovich at gmail.com


--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2013-09-02 06:26:08 PDT ---
-----
import std.conv;
import std.stdio;
import std.string;
import std.traits;
import std.typetuple;
import std.socket;

void main()
{
    string[] enums = to!(string[])([EnumMembers!SocketOption]);
    writeln(enums.join("\n"));
}
-----

Prints:

DEBUG
BROADCAST
REUSEADDR
LINGER
OOBINLINE
SNDBUF
RCVBUF
DONTROUTE
SNDTIMEO
RCVTIMEO
ERROR
KEEPALIVE
ACCEPTCONN
RCVLOWAT
SNDLOWAT
TYPE
DEBUG  -- note duplicate!
REUSEADDR -- note duplicate!
IPV6_MULTICAST_IF
IPV6_MULTICAST_LOOP
IPV6_MULTICAST_HOPS
IPV6_JOIN_GROUP
IPV6_LEAVE_GROUP
IPV6_V6ONLY

The workaround for user code is to use NoDuplicate from std.typetuple:

string[] enums = to!(string[])([NoDuplicates!(EnumMembers!SocketOption)]);

-- 
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