
On Wed, Sep 28, 2011 at 7:22 AM, Steven Watanabe <watanabesj@gmail.com>wrote:
AMDG
Unfortunately, this changes the behavior of the library. is_convertible<Q1, Q2> will return true if the units are unrelated. It can also change the result of overload resolution.
Well I certainly don't want to break the library! It was not a wise choice to change the implementation of a published library, to demonstrate the use of METATEST. I will work on other examples in published libraries over the weekend. I did however, hopefully at least demonstrate the idea, that should a complex library contain a METATEST, it could be successfully unit tested to prove the assertion is true, and false, when expected to be.
As far as is_convertible goes, the following unit test is failing using a completely unmodified boost distribution: BOOST_AUTO_TEST_CASE(failing_convertible_units) { bool result = is_convertible<length, energy>::value; BOOST_CHECK_EQUAL(result, false); } Since length and energy are incompatible units, shouldn't is_convertible fail? I could certainly learn much more about both is_convertible and boost::units. As far as units::quantity goes, I think that overload resolution could possibly be managed inside the added conversion constructor, with a meta-function testing if the rhs_type would have been implicitly convertible to this_type, and to METATEST on that condition. I am curious of your opinion on this, since you certainly know more about this library than I. Thank you, Ben Robinson, Ph.D. In Christ,
Steven Watanabe
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost