Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.


Function call
<boost/python/call.hpp> defines the call family of overloaded function templates, used to invoke Python callable objects from C++.
template <class R, class A1, class A2, ... class An>
R call(PyObject* callable, A1 const&, A2 const&, ... An const&)


R is a pointer type, reference type, or a complete type with an accessible copy constructor


Invokes callable(a1, a2, in Python, where are the arguments to call(), converted to Python objects.


The result of the Python call, converted to the C++ type R.


For a complete semantic description and rationale, see this page.

The following C++ function applies a Python callable object to its two arguments and returns the result. If a Python exception is raised or the result can't be converted to a double, an exception is thrown.

double apply2(PyObject* func, double x, double y)
   return boost::python::call<double>(func, x, y);