diff --git a/include/boost/python/converter/arg_from_python.hpp b/include/boost/python/converter/arg_from_python.hpp index e1d15e68..e2edce7e 100755 --- a/include/boost/python/converter/arg_from_python.hpp +++ b/include/boost/python/converter/arg_from_python.hpp @@ -148,8 +148,9 @@ struct back_reference_arg_from_python template struct if_2 - : mpl::eval_if, F> -{}; +{ + typedef typename mpl::eval_if, F>::type type; +}; // This metafunction selects the appropriate arg_from_python converter // type for an argument of type T. @@ -176,18 +177,18 @@ struct select_arg_from_python mpl::or_< indirect_traits::is_reference_to_non_const , indirect_traits::is_reference_to_volatile - > - , reference_arg_from_python - , mpl::if_< - boost::python::is_back_reference - , back_reference_arg_from_python - , arg_rvalue_from_python - > - > - > - > - > - >::type type; + > + , reference_arg_from_python + , mpl::if_< + boost::python::is_back_reference + , back_reference_arg_from_python + , arg_rvalue_from_python + > + > + > + > + > + >::type type; }; // ================== diff --git a/include/boost/python/converter/registered.hpp b/include/boost/python/converter/registered.hpp index 56718a1a..4b3866f1 100644 --- a/include/boost/python/converter/registered.hpp +++ b/include/boost/python/converter/registered.hpp @@ -10,7 +10,6 @@ # include # include # include -# include namespace boost { @@ -59,49 +58,34 @@ struct registered namespace detail { inline void - register_shared_ptr(...) + register_shared_ptr0(...) { } template inline void - register_shared_ptr(type >) + register_shared_ptr0(shared_ptr*) { registry::lookup_shared_ptr(type_id >()); } template inline void - register_shared_ptr(type const>) + register_shared_ptr1(T const volatile*) { - detail::register_shared_ptr(type >()); - } - - template - inline void - register_shared_ptr(type volatile>) - { - detail::register_shared_ptr(type >()); - } - - template - inline void - register_shared_ptr(type const volatile>) - { - detail::register_shared_ptr(type >()); + detail::register_shared_ptr0((T*)0); } template registration const& - registry_lookup(type) + registry_lookup(T&(*)()) { - detail::register_shared_ptr(type()); + detail::register_shared_ptr1((T*)0); return registry::lookup(type_id()); } - + template - registration const& registered_base::converters - = detail::registry_lookup(type()); + registration const& registered_base::converters = detail::registry_lookup((T(*)())0); } }}} // namespace boost::python::converter