|
|
Boost.PythonHeader <boost/python/implicit.hpp> |
implicitly_convertible
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_convertibletemplate <class Source, class Target> void implicitly_convertible();
| Parameter | Description |
|---|---|
Source
| The source type of the implicit conversion |
Target
| The target type of the implicit conversion |
Target(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 <boost/python/class.hpp>
#include <boost/python/implicit.hpp>
#include <boost/python/module.hpp>
using namespace boost::python;
struct X
{
X(int x) : v(x) {}
operator int() { return v; }
int v;
};
int x_value(X const& x)
{
return x.v;
}
X make_x(int n) { return X(n); }
BOOST_PYTHON_MODULE_INIT(implicit_ext)
{
module("implicit_ext")
.def("x_value", x_value)
.def("make_x", make_x)
.add(
class_<X>("X")
.def_init(args<int>())
)
;
implicitly_convertible<X,int>();
implicitly_convertible<int,X>();
}
>>> from implicit_ext import * >>> x_value(X(42)) 42 >>> x_value(42) 42 >>> x = make_x(X(42)) >>> x_value(x) 42
Revised 08 May, 2002
© Copyright Dave Abrahams 2002. All Rights Reserved.