$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Alisdair Meredith (alisdair.meredith_at_[hidden])
Date: 2003-02-07 17:58:57
I have a potential patch for the boost::array tests that will pass under
Borland 0x561 and probably under MSVC as well [I think it is the same
issue]
I am leary of resolving an issue by patching a test, but I think the
issue is comparatively minor, especially in regard to most library use,
and currently failing 40% of tests does not accurately reflect the case
either.
The problem is that borland (and likely MS) cannot use initialiser
syntax for aggregates that are in turn made up of non-aggregate types.
The failing tests (3 & 4) uses arrays of std::strings. Switching to
const char * on the broken compiler 'resolves' the issue.
Hence the proposed patch: [from CVS diff logs]
cvs diff array3.cpp (in directory
C:\Projects\3rdParty\boost\libs\array\)
Index: array3.cpp
===================================================================
RCS file: /cvsroot/boost/boost/libs/array/array3.cpp,v
retrieving revision 1.5
diff -r1.5 array3.cpp
12a13,20
> #if defined( BOOST_AGGREGATES_INITIALISE_ONLY_PODS )
> typedef const char * season_type;
> #else
> typedef std::string season_type;
> #endif
>
> typedef boost::array<season_type,4> seasons_array;
>
19c27
< boost::array<std::string,4> seasons = {
---
> seasons_array seasons = {
24c32
< boost::array<std::string,4> seasons_orig = seasons;
---
> seasons_array seasons_orig = seasons;
39c47
< for (boost::array<std::string,4>::reverse_iterator pos
---
> for (seasons_array::reverse_iterator pos
56d63
<
===================================================================
and
===================================================================
RCS file: /cvsroot/boost/boost/libs/array/array4.cpp,v
retrieving revision 1.4
diff -r1.4 array4.cpp
14a15,23
> #if defined( BOOST_AGGREGATES_INITIALISE_ONLY_PODS )
> typedef const char * season_type;
> #else
> typedef std::string season_type;
> #endif
>
> typedef boost::array<season_type,4> seasons_array;
>
>
18c27
< boost::array<boost::array<std::string,4>,2> seasons_i18n = {
---
> boost::array<seasons_array,2> seasons_i18n = {
26c35
< boost::array<std::string,4> seasons = seasons_i18n[i];
---
> seasons_array seasons = seasons_i18n[i];
BOOST_AGGREGATES_INITIALISE_ONLY_PODS would (obviously!) be defined in
config for each affected compiler, known to be Borland up to 0x0561,
MSVC6 and MSVC7.
--
AlisdairM