diff --git a/include/boost/python/return_opaque_pointer.hpp b/include/boost/python/return_opaque_pointer.hpp index 2109d4ec..6a3af9be 100644 --- a/include/boost/python/return_opaque_pointer.hpp +++ b/include/boost/python/return_opaque_pointer.hpp @@ -15,39 +15,43 @@ # include namespace boost { namespace python { - namespace detail { - template - struct opaque_conversion_holder { - inline PyObject *operator () (Pointer p) { - static opaque_pointer_converter converter ( - typeid (Pointer).name()); - return converter.convert(p); - } - }; +namespace detail +{ + template + struct opaque_conversion_holder + { + inline PyObject *operator()(Pointer p) const + { + static opaque_pointer_converter converter ( + typeid (Pointer).name()); - template - struct return_opaque_pointer_requires_a_pointer_type + return converter.convert(p); + } + }; + + template + struct return_opaque_pointer_requires_a_pointer_type # if defined(__GNUC__) && __GNUC__ >= 3 || defined(__EDG__) - {} + {} # endif - ; - } + ; +} - struct return_opaque_pointer +struct return_opaque_pointer +{ + template + struct apply { - template - struct apply - { - BOOST_STATIC_CONSTANT( - bool, ok = is_pointer::value); + BOOST_STATIC_CONSTANT( + bool, ok = is_pointer::value); - typedef typename mpl::if_c< - ok - , detail::opaque_conversion_holder - , detail::return_opaque_pointer_requires_a_pointer_type - >::type type; - }; + typedef typename mpl::if_c< + ok + , detail::opaque_conversion_holder + , detail::return_opaque_pointer_requires_a_pointer_type + >::type type; }; +}; }} // namespace boost::python # endif // RETURN_OPAQUE_POINTER_HPP_