digitalmars.D.bugs - [Issue 1588] New: std variant changes type at opMul
- d-bugmail puremagic.com (30/30) Oct 16 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1588
- d-bugmail puremagic.com (6/6) Oct 16 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1588
- d-bugmail puremagic.com (7/7) Mar 06 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1588
http://d.puremagic.com/issues/show_bug.cgi?id=1588 Summary: std variant changes type at opMul Product: D Version: 2.006 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: bugzilla digitalmars.com ReportedBy: frank frankhirsch.net I declare and initialse two Variants: Variant va=1; Variant vb=-2; This works as expected: printf("%i\n",va.get!(int)); printf("%i\n",vb.get!(int)); Here be dragons at runtime: printf("%i\n",(va+vb).get!(int)); -> Error: Variant: attempting to use incompatible types ulong and int printf("%i\n",(va*vb).get!(int)); -> Error: Variant: attempting to use incompatible types ulong and int Why the heck "ulong"? Makes no sense to me... printf("%ul\n",(va+vb).get!(ulong)); // of course this is nonsense for -1 printf("%ul\n",(va*vb).get!(ulong)); // of course this is nonsense for -2 This, erm, "works", but I wouldn't... printf("%i\n",(va+vb).get!(ulong)); printf("%i\n",(va*vb).get!(ulong)); --
Oct 16 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1588 andrei metalanguage.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED --
Oct 16 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1588 andrei metalanguage.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED --
Mar 06 2008