|
Boost : |
From: Richard Webb (richard.webb_at_[hidden])
Date: 2008-01-19 07:03:04
I've been running the Boost regression tests against VC9 with the beta TR1
feature pack, and raising some of the failures as bugs with MS.
>From reading the standards, it seems that some of the test failures are in areas
which have changed over time. The MS blog post @ <http://tinyurl.com/3b9ksc>
mentions N2157 ( http://tinyurl.com/2r54lo ), so i assume that they're working
on at least that revision.
So, from the tests:
-tr1_is_base_of_test (http://tinyurl.com/2hzmae) is failing because Boost thinks
is_base_of<int, int> should be true and VC9 says it's false.
n2157 has the example "is_base_of<int, int>::value // false", so VC looks
correct here.
-tr1_is_convertible_test (http://tinyurl.com/2dortk) has 2 sets of failures:
1) is_convertible<float,void>/is_convertible<void,void> are both false, and
Boost expects both to be true.
n2157 says "If To and From are void types, the result is true. However if only
one of To or From is a void type, then the result is false", which is a change
to the spec.
In this case, both Boost and VC9 seem to be wrong in one case.
2)is_convertible<float,convertible_from<float&>>
is_convertible<char,convertible_from<char&>>
are both false.
n2157 says "Given a type T, the TR1 is_convertible<T, T&>::value is true whereas
this paper proposes false unless T is a non-volatile but const qualified type",
which sounds like VC is correct here.
Does anyone with a better grasp of the current requirements have any thoughts on
this?
Thanks,
Richard Webb
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk