diff --git a/doc/v2/configuration.html b/doc/v2/configuration.html
index 0415ca2b..1be862ed 100644
--- a/doc/v2/configuration.html
+++ b/doc/v2/configuration.html
@@ -106,6 +106,33 @@
function from being treated as an exported symbol on platforms which
support that distinction in-code
+
+
+ BOOST_PYTHON_ENABLE_CDECL |
+
+ not defined |
+
+ If defined, allows functions using the __cdecl
+ calling convention to be wrapped. |
+
+
+
+ BOOST_PYTHON_ENABLE_STDCALL |
+
+ not defined |
+
+ If defined, allows functions using the __stdcall
+ calling convention to be wrapped. |
+
+
+
+ BOOST_PYTHON_ENABLE_FASTCALL |
+
+ not defined |
+
+ If defined, allows functions using the __fastcall
+ calling convention to be wrapped. |
+
Library Defined Implementation
diff --git a/include/boost/python/object/make_instance.hpp b/include/boost/python/object/make_instance.hpp
index 8f355fe2..937c97c2 100644
--- a/include/boost/python/object/make_instance.hpp
+++ b/include/boost/python/object/make_instance.hpp
@@ -21,7 +21,7 @@ struct make_instance_impl
template
static inline PyObject* execute(Arg& x)
{
- BOOST_STATIC_ASSERT(is_class::value);
+ BOOST_MPL_ASSERT((mpl::or_, is_union >));
PyTypeObject* type = Derived::get_class_object(x);
diff --git a/include/boost/python/object/pointer_holder.hpp b/include/boost/python/object/pointer_holder.hpp
index 2dc6dda9..4627e34a 100644
--- a/include/boost/python/object/pointer_holder.hpp
+++ b/include/boost/python/object/pointer_holder.hpp
@@ -35,6 +35,8 @@
# include
+# include
+
namespace boost { namespace python {
template class wrapper;
@@ -122,26 +124,29 @@ inline pointer_holder_back_reference::pointer_holder_back_referen
template
void* pointer_holder::holds(type_info dst_t, bool null_ptr_only)
{
+ typedef typename boost::remove_const< Value >::type non_const_value;
+
if (dst_t == python::type_id()
&& !(null_ptr_only && get_pointer(this->m_p))
)
return &this->m_p;
- Value* p
+ Value* p0
# if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
= static_cast( get_pointer(this->m_p) )
# else
= get_pointer(this->m_p)
# endif
;
-
+ non_const_value* p = const_cast( p0 );
+
if (p == 0)
return 0;
if (void* wrapped = holds_wrapped(dst_t, p, p))
return wrapped;
- type_info src_t = python::type_id();
+ type_info src_t = python::type_id();
return src_t == dst_t ? p : find_dynamic_type(p, src_t, dst_t);
}
diff --git a/include/boost/python/signature.hpp b/include/boost/python/signature.hpp
index 1bb2b226..f1143e3a 100644
--- a/include/boost/python/signature.hpp
+++ b/include/boost/python/signature.hpp
@@ -52,16 +52,23 @@ struct most_derived
//
// template
// inline mpl::vector