[section boost/python/implicit.hpp] [section Introduction] `implicitly_convertible` allows Boost.Python to implicitly take advantage of a C++ implicit or explicit conversion when matching Python objects to C++ argument types. [endsect] [section Function template `implicit_convertible`] `` template void implicitly_convertible(); `` [table [[Parameter][Description]] [[Source][The source type of the implicit conversion]] [[Target][The target type of the implicit conversion]] ] [variablelist [[Requires][The declaration `Target t(s);`, where s is of type Source, is valid.]] [[Effects][registers an rvalue `from_python` converter to Target which can succeed for any `PyObject* p` iff there exists any registered converter which can produce Source rvalues]] [[Rationale][C++ users expect to be able to take advantage of the same sort of interoperability in Python as they do in C++.]] ] [endsect] [section Example] In C++: `` #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(); } `` In Python: `` >>> from implicit_ext import * >>> x_value(X(42)) 42 >>> x_value(42) 42 >>> x = make_x(X(42)) >>> x_value(x) 42 `` [endsect] [endsect]