[Issue 1588] New: std variant changes type at opMul
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Tue Oct 16 15:55:44 PDT 2007
    
    
  
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 at digitalmars.com
        ReportedBy: frank at 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));
-- 
    
    
More information about the Digitalmars-d-bugs
mailing list