[C++-sig] Re: Mac OS 10 success

David Abrahams dave at boost-consulting.com
Thu May 22 17:30:35 CEST 2003


"Ralf W. Grosse-Kunstleve" <rwgk at yahoo.com> writes:

> --- David Abrahams <dave at boost-consulting.com> wrote:
>> I don't like the first two patches, which aren't conditional on your
>> platform.  If you could make that change I wouldn't mind you checking
>> them in.
>
> The PY_LONG_LONG patch is already in CVS (in a slightly different form).
>
> Here is the other patch that you don't like:
>
> Index: as_to_python_function.hpp
> ===================================================================
> RCS file:
> /cvsroot/boost/boost/boost/python/converter/as_to_python_function.hpp,v
> retrieving revision 1.1
> diff -u -r1.1 as_to_python_function.hpp
> --- as_to_python_function.hpp   2 Dec 2002 01:37:39 -0000       1.1
> +++ as_to_python_function.hpp   22 May 2003 01:01:11 -0000
> @@ -25,10 +25,12 @@
>          
>      static PyObject* convert(void const* x)
>      {
> +#if !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ == 3)
>          BOOST_STATIC_ASSERT(
>              sizeof(
>                 
> convert_function_must_take_value_or_const_reference(&ToPython::convert, 1L))
>              == sizeof(int));
> +#endif
>          
>          // Yes, the const_cast below opens a hole in const-correctness,
>          // but it's needed to convert auto_ptr<U> to python.
>
> The #if is necessary both under Redhat 8 and Mac OS 10. Therefore I am jumping
> to the conclusion that gcc 3.3 cannot cope with the code on any platform. Here
> is the error message (using Redhat 8 in this case):
>
> /net/cci/rwgk/hot/boost/boost/python/converter/as_to_python_function.hpp:33:
> sorry, unimplemented: `
>    method_call_expr' not supported by dump_expr
>
> What do you think?

I think that's a silly bug and it should be reported to GNU ;-) 

In fact, the sizeof stuff isn't needed; I was just trying to avoid
some compilation overhead, but that was a shot in the dark.  You can
change both of those
convert_function_must_take_value_or_const_reference overloads to
inline void, give them bodies, and remove the
BOOST_STATIC_ASSERT(sizeof( ... ) == sizeof(int)) wrapper around the
call.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com





More information about the Cplusplus-sig mailing list