Boost logo

Boost :

From: AlisdairM (alisdair.meredith_at_[hidden])
Date: 2006-06-04 04:18:58


I finally committed support for zero length arrays to the boost array
library, and it is showing up what I believe are test case errors in
the TR1 'tricky' tests.

[tuple interface remains available only through John's TR1
implementation right now]

The following tests from test_array_trick.cpp lines should be
reconsidered:

line 51: empty will return true if the array is length zero.
verify_return_type(ca.empty(), false);

lines 73-75: are all compile-time fails for array length zero
BOOST_STATIC_ASSERT((::boost::is_same< typename
std::tr1::tuple_element<0,T>::type, value_type>::value));
verify_return_type(&std::tr1::get<0>(a), static_cast<value_type*>(0));
verify_return_type(&std::tr1::get<0>(ca), static_cast<const
value_type*>(0));

I thought about the tests for operator[]/at/front/back and figure these
are OK, even the the results of calling those functions are unspecified
(but not undefined) as:
i/ you don't actually call the functions!
ii/ they are required to be present, so this code MUST compile
iii/ I believe even if the effects of calling the fns is unspecified,
the actual return type is fixed.

So those tests are good, indeed they must be kept!

With the above mods, I believe we should now pass the TR1 tricky tests
for array, and I will leave back-porting the tuple interface to
namespace boost for 1.35.

-- 
AlisdairM

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk