...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Boost.PythonHeader
|
implicitly_convertible
allows Boost.Python to implicitly
take advantage of a C++ implicit or explicit conversion when matching
Python objects to C++ argument types.
implicitly_convertible
templatevoid implicitly_convertible();
Parameter | Description |
---|---|
Source |
The source type of the implicit conversion |
Target |
The target type of the implicit conversion |
Target t(s);
, where
s
is of type Source
, is valid.from_python
converter to Target
which can succeed for any
PyObject* p
iff there exists any registered converter
which can produce Source
rvalues#include#include #include using namespace boost::python; struct X { X(int x) : v(x) {} operator int() const { return v; } int v; }; int x_value(X const& x) { return x.v; } X make_x(int n) { return X(n); } BOOST_PYTHON_MODULE(implicit_ext) { def("x_value", x_value); def("make_x", make_x); class_ ("X", init ()) ; implicitly_convertible (); implicitly_convertible (); }
>>> from implicit_ext import * >>> x_value(X(42)) 42 >>> x_value(42) 42 >>> x = make_x(X(42)) >>> x_value(x) 42
Revised 13 November, 2002
© Copyright Dave Abrahams 2002.