mirror of https://github.com/mosra/magnum.git
Browse Source
Having implicit conversion on Unit class causes much more harm than
doing the conversion some other way -- mainly for multiplication and
division, which is done with builtin operators and thus the result is
unitless. Also it is possible to do wrong "retyping" between degrees and
radians:
Rad a = Constants::pi();
Deg b(a*2);
On GCC >4.5 b is `180`, but on GCC 4.4 it is `2pi`, which is obviously
wrong and not wanted.
The conversion is done using Unit::toUnderlyingType() which is now used
everywhere instead of conversion operator. The conversion operator is
made available only for GCC 4.5, where it can be marked as explicit.
This might cause incompatibilites with `master` branch, where no
Unit::toUnderlyingType() exists, but users should have no need to
convert it to underlying type anyway as all required functions are
available through the library.
This reverts commit 36ac4de5c4 and
partially also 0db3a183ae (UnitTest.cpp).
14 changed files with 54 additions and 73 deletions
Loading…
Reference in new issue