mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 21:25:13 +00:00
a bit more documentation on reference counting wrappers
This commit is contained in:
parent
7641c1dd11
commit
1853b65ff1
@ -427,18 +427,27 @@ references to the object. When wrapping a type named ``Type``, the default
|
|||||||
value of this template parameter is ``std::unique_ptr<Type>``, which means that
|
value of this template parameter is ``std::unique_ptr<Type>``, which means that
|
||||||
the object is deallocated when Python's reference count goes to zero.
|
the object is deallocated when Python's reference count goes to zero.
|
||||||
|
|
||||||
It is possible to switch to other types of smart pointers, which is useful in
|
It is possible to switch to other types of reference counting wrappers or smart
|
||||||
codebases that rely on them. For instance, the following snippet causes
|
pointers, which is useful in codebases that rely on them. For instance, the
|
||||||
``std::shared_ptr`` to be used instead.
|
following snippet causes ``std::shared_ptr`` to be used instead.
|
||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
py::class_<Example, std::shared_ptr<Example>> obj(m, "Example");
|
py::class_<Example, std::shared_ptr<Example>> obj(m, "Example");
|
||||||
|
|
||||||
|
To enable transparent conversions for functions that take shared pointers as an
|
||||||
|
argument or that return them, a macro invocation similar to the following must
|
||||||
|
be declared at the top level before any binding code:
|
||||||
|
|
||||||
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
PYBIND_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
The file :file:`example/example8.cpp` contains a complete example that
|
The file :file:`example/example8.cpp` contains a complete example that
|
||||||
demonstrates how to work with custom smart pointer types in more detail.
|
demonstrates how to work with custom reference-counting holder types in
|
||||||
|
more detail.
|
||||||
|
|
||||||
.. _custom_constructors:
|
.. _custom_constructors:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user