|
Boost : |
From: Jonathan Brandmeyer (jbrandmeyer_at_[hidden])
Date: 2005-02-03 22:54:13
On Thu, 2005-02-03 at 22:23 -0500, Jonathan Brandmeyer wrote:
> On Thu, 2005-02-03 at 15:48 +0000, John Maddock wrote:
> > >> I attach the valgrind output for one of the Boost.Python tests.
> > >> Does this ring any bells?
> > >
> > > I started to do a test run with GCC 3.3.5, and noticed this warning in
> > > the output (should be an error, IMO...):
> > > /home/jonathan/src/boost-CVS-HEAD/boost/boost/preprocessor/iteration/detail/local.hpp:37:
> > > instantiated from here
> > > /home/jonathan/src/boost-CVS-HEAD/boost/boost/python/object_core.hpp:285:
> > > warning: cannot
> > > pass objects of non-POD type `struct boost::integral_constant<bool,
> > > true>'
> > > through `...'; call will abort at runtime
> >
> > Initially, I thought this might be related to the recent type traits
> > changes, but if it is, I can't see how (integral_constant<bool,v> inherits
> > from mpl::true_ / mpl::false_ so the usual conversions should apply and do
> > the right thing here.
> >
> > Anyone else?
> >
> > John.
>
> GCC at least doesn't think that the conversion applies, as this test
> indicates.
>
> The compiler's output:
> /home/jonathan/Desktop/mpl_crash.cpp: In function `int main()':
> /home/jonathan/Desktop/mpl_crash.cpp:19: warning: cannot pass objects of
> non-POD type `struct derived' through `...'; call will abort at
> runtime
> /home/jonathan/Desktop/mpl_crash.cpp:21: warning: cannot pass objects of
> non-POD type `struct boost::integral_constant<bool, true>' through
> `...';
The attached patch solves the problem for GCC. The attached test
program was used to test this change.
-Jonathan
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk