www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1588] New: std variant changes type at opMul

reply d-bugmail puremagic.com writes:
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
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1588


andrei metalanguage.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED




-- 
Oct 16 2007
prev sibling parent d-bugmail puremagic.com writes:
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