[Issue 11571] New: introduce "originalType" in std.conv

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Nov 21 11:14:23 PST 2013


https://d.puremagic.com/issues/show_bug.cgi?id=11571

           Summary: introduce "originalType" in std.conv
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Phobos
        AssignedTo: nobody at puremagic.com
        ReportedBy: monarchdodra at gmail.com


--- Comment #0 from monarchdodra at gmail.com 2013-11-21 11:14:20 PST ---
std.traits has "Unsigned"/"Signed" to operate on types, and their convenient
helpers in std.conv "unsigned"/"signed", to operate on values.

EG:
uint a;
b = a.signed;

I'd like to request the function "originalType", which would be std.traits'
"OriginalType", but that operates on values.

This would make it an easy and convenient way to strip the enum characteristic
information of an enumerate, and simply operate on the value represented by
said enum.

This would be useful, amongst others, in templates, to a), limit intanciations,
and b), to avoid operating on enums, which always tends to throw them off.
Also, it could be useful to print string enums, to "observe" the difference
between the enum *name* (printed by default), and the enum *value* (the string
carried by said enum).

For example:

enum LinkageType : string
{
    D = "D", ///
    C = "C", /// ditto
    Windows = "Windows", /// ditto
    Pascal = "Pascal", /// ditto
    Cpp = "C++" /// ditto
}

writeln(LinkageType.Cpp); //prints "Cpp"
writeln(LinkageType.Cpp.originalType); //prints "C++"

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


More information about the Digitalmars-d-bugs mailing list