pybind11/docs/advanced
Jason Rhinelander f3ce00eaed vectorize: pass-through of non-vectorizable args
This extends py::vectorize to automatically pass through
non-vectorizable arguments.  This removes the need for the documented
"explicitly exclude an argument" workaround.

Vectorization now applies to arithmetic, std::complex, and POD types,
passed as plain value or by const lvalue reference (previously only
pass-by-value types were supported).  Non-const lvalue references and
any other types are passed through as-is.

Functions with rvalue reference arguments (whether vectorizable or not)
are explicitly prohibited: an rvalue reference is inherently not
something that can be passed multiple times and is thus unsuitable to
being in a vectorized function.

The vectorize returned value is also now more sensitive to inputs:
previously it would return by value when all inputs are of size 1; this
is now amended to having all inputs of size 1 *and* 0 dimensions.  Thus
if you pass in, for example, [[1]], you get back a 1x1, 2D array, while
previously you got back just the resulting single value.

Vectorization of member function specializations is now also supported
via `py::vectorize(&Class::method)`; this required passthrough support
for the initial object pointer on the wrapping function pointer.
2017-05-24 20:43:41 -04:00
..
cast Add type caster for std::variant and other variant-like classes 2017-04-29 17:31:30 +02:00
pycpp vectorize: pass-through of non-vectorizable args 2017-05-24 20:43:41 -04:00
classes.rst added note about trailing commas (fixes #593) 2017-03-22 21:39:19 +01:00
exceptions.rst Reorganize documentation 2016-10-20 15:21:34 +02:00
functions.rst Allow py::arg().none(false) argument attribute 2017-05-24 13:10:57 -04:00
misc.rst Add a scope guard call policy 2017-04-03 00:52:47 +02:00
smart_ptrs.rst Improve custom holder support (#607) 2017-01-31 17:05:44 +01:00