> Hmm. You might be able to make this work with another class that holds > the AlignedType and has an implicit conversion to it:
Nice trick, it surprisingly compiled. I found meanwhile though that the problem is more general: whenever a new instance of AlignedType is created from python, it will be possibly mis-aligned, because the Python allocator does not care about alignment: it simply provides a chunk of memory based on PyTypeObject.{tp_basicsize,tp_itemsize} for the type being instantiated. A possible workaround (though quite laborious) is to use the overloaded operator new ot AlignedType, which aligns properly, and write all ctors of the wrapped class such that pointer (manage_new_object, I assume?) is returned: namespace py=boost::python; static AlignedType* AlignedType_new(){ return new AlignedType; } static AlignedType* AlignedType_copy(const AlignedType& other){ return new AlignedType(other); } py::class_<AlignedType>("AlignedType",boost::python::no_init) .def("__init__",&AlignedType_new) .def("__init__",&AlignedType_copy) ; Isn't that insane? Is there a better way? Cheers, v. _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig