...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
return_by_value
return_by_value
synopsisreturn_by_value
metafunctionsreturn_by_value
return_by_value
is a model of ResultConverterGenerator
which can be used to wrap C++ functions returning any reference or value
type such that the return value is copied into a new Python object.
return_by_value
synopsisnamespace boost { namespace python { struct return_by_value { template <class T> struct apply; }; }}
return_by_value
metafunctionstemplate <class T> struct apply
#include <boost/python/module.hpp> #include <boost/python/class.hpp> #include <boost/python/return_by_value.hpp> #include <boost/python/return_value_policy.hpp> // classes to wrap struct Bar { }; Bar global_bar; // functions to wrap: Bar b1(); Bar& b2(); Bar const& b3(); // Wrapper code using namespace boost::python; template <class R> void def_void_function(char const* name, R (*f)()) { def(name, f, return_value_policy<return_by_value>()); } BOOST_PYTHON_MODULE(my_module) { class_<Bar>("Bar"); def_void_function("b1", b1); def_void_function("b2", b2); def_void_function("b3", b3); }
>>> from my_module import * >>> b = b1() # each of these calls >>> b = b2() # creates a brand >>> b = b3() # new Bar object
Revised 13 November, 2002
© Copyright Dave Abrahams 2002.