Boost logo

Boost :

From: Ralf W. Grosse-Kunstleve (rwgk_at_[hidden])
Date: 2004-02-12 17:13:41


Because of a problem in boost/function/function_template.hpp Boost.Python in
the current CVS HEAD does not compile with gcc 2.96 under RedHat 7.3. Attached
is a suggested workaround (tested with gcc 2.96 and EDG 245).
Ralf

Index: function_base.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/function/function_base.hpp,v
retrieving revision 1.72
diff -u -r1.72 function_base.hpp
--- function_base.hpp 11 Feb 2004 18:16:55 -0000 1.72
+++ function_base.hpp 12 Feb 2004 22:01:42 -0000
@@ -188,8 +188,10 @@
       // The trivial manager does nothing but return the same pointer (if we
       // are cloning) or return the null pointer (if we are deleting).
       template<typename F>
- inline any_pointer
- trivial_manager(any_pointer f, functor_manager_operation_type op)
+ struct trivial_manager
+ {
+ static inline any_pointer
+ get(any_pointer f, functor_manager_operation_type op)
         {
           switch (op) {
           case clone_functor_tag: return f;
@@ -209,6 +211,7 @@
           // Clears up a warning with GCC 3.2.3
           return make_any_pointer(reinterpret_cast<void*>(0));
         }
+ };
 
       /**
        * The functor_manager class contains a static function "manage" which
Index: function_template.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/function/function_template.hpp,v
retrieving revision 1.70
diff -u -r1.70 function_template.hpp
--- function_template.hpp 24 Jan 2004 23:31:40 -0000 1.70
+++ function_template.hpp 12 Feb 2004 22:01:42 -0000
@@ -508,7 +508,7 @@
           invoker_type;
 
         invoker = &invoker_type::invoke;
- this->manager = &detail::function::trivial_manager<FunctionObj>;
+ this->manager = &detail::function::trivial_manager<FunctionObj>::get;
         this->functor =
           this->manager(
             detail::function::make_any_pointer(
@@ -529,7 +529,7 @@
>::type
           invoker_type;
       invoker = &invoker_type::invoke;
- this->manager = &detail::function::trivial_manager<FunctionObj>;
+ this->manager = &detail::function::trivial_manager<FunctionObj>::get;
       this->functor = detail::function::make_any_pointer(this);
     }
 

__________________________________
Do you Yahoo!?
Yahoo! Finance: Get your refund fast by filing online.
http://taxes.yahoo.com/filing.html


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