Boost logo

Boost :

From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2006-06-22 02:05:19

I'm proposing patches for two problems CW 8.3 is currently
having with multi_array:

1. CW 8.3 does not support the default arg in the following declaration
of a member function of index_range (boost/multi_array/index_rang.hpp):

index get_start(index low_index_range = index_range::from_start()) const

unless index_range::from_start() has been previously declared, which has

not in the current codebase. The fix consists simply in moving
upward inside the definition of index_range, see attached file
index_range.hpp.diff. This fix is absolutely innocent and cannot break
other compilers.

2. In CW 8.3, std::ptrdiff_t is *not* int, which, combined with the fact

that this compiler does not support SFINAE, makes the line 243
of libs/multi_array/test/generative_tests.hpp


to unintendedly resolve to a call to this overload of

  // disabled for integral types in SFINA-capable compilers
  template <class BaseList> void reindex(const BaseList& values);

The fix consists in modifying generative_tests.hpp so as to make
sure we are calling the overload of reindex taking a
boost::multi_array_types::index value:

    typedef boost::multi_array_types::index index;

See the attached patch file generative_tests.hpp.diff.
Curiously enough, the typedef above was already defined, but not used,
in the CVS version of generative_tests.hpp, which leads me to think
that the author was thinking of this problem but somehow forgot about it

before making effective use of the typedef.

Is there any objection to these two patches being commited to the
trunk and RC_1_34_0 branch?

Thank you,

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo

> private:
> static index from_start()
> { return (std::numeric_limits<index>::min)(); }
> static index to_end()
> { return (std::numeric_limits<index>::max)(); }
< private:
< static index from_start()
< { return (std::numeric_limits<index>::min)(); }
< static index to_end()
< { return (std::numeric_limits<index>::max)(); }

> #include <boost/config.hpp> /* BOOST_NO_SFINAE */
< A.reindex(1);

>     A.reindex(index(1));
> #else
>     A.reindex(1);
> #endif 

Boost list run by bdawes at, gregod at, cpdaniel at, john at