digitalmars.D.bugs - [Issue 11571] New: introduce "originalType" in std.conv
- d-bugmail puremagic.com (42/42) Nov 21 2013 https://d.puremagic.com/issues/show_bug.cgi?id=11571
- d-bugmail puremagic.com (12/12) Mar 31 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11571
- d-bugmail puremagic.com (13/15) Mar 31 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11571
- d-bugmail puremagic.com (7/9) Mar 31 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11571
- d-bugmail puremagic.com (22/27) Mar 31 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11571
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 puremagic.com ReportedBy: monarchdodra gmail.com 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: -------
Nov 21 2013
https://d.puremagic.com/issues/show_bug.cgi?id=11571 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |andrej.mitrovich gmail.com Resolution| |WORKSFORME 13:56:12 CEST --- Already implemented in std.traits, named exactly OriginalType. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 31 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11571 monarchdodra gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|WORKSFORME |Already implemented in std.traits, named exactly OriginalType.Did you even *read* the issue?I'd like to request the function "originalType", which would be std.traits'"OriginalType", but that operates on values. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 31 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11571 14:19:35 CEST ---Missed that part. Although it's kind of very trivial for inclusion.. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------I'd like to request the function "originalType", which would be std.traits'"OriginalType", but that operates on values.
Mar 31 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11571Yes, but it *does* trigger inference. EG: a.originalType; vs cast(OriginalType!(typeof(a))a; It's really no different from: - appender - representation - tuple - [un]signed - zip - ... All of these functions are trivial. But convenient. It also helps avoiding things like "if (is(T E == enum)) ..." altogether, if you can just paste ".originType" after it, and be done with it... ...Unless you have an enum type that's whose values are a subset of another enum (recursion)? I don't think a lot of code in phobos supports that :D -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------Missed that part. Although it's kind of very trivial for inclusion..I'd like to request the function "originalType", which would be std.traits'"OriginalType", but that operates on values.
Mar 31 2014