Adding pybind11::cast overload for rvalue references (#1260)
* Adding pybind11::cast overload for rvalue references
diff --git a/tests/test_smart_ptr.cpp b/tests/test_smart_ptr.cpp
index 87c9be8..6f8f382 100644
--- a/tests/test_smart_ptr.cpp
+++ b/tests/test_smart_ptr.cpp
@@ -291,7 +291,8 @@
~C() { print_destroyed(this); }
};
py::class_<C, custom_unique_ptr<C>>(m, "TypeWithMoveOnlyHolder")
- .def_static("make", []() { return custom_unique_ptr<C>(new C); });
+ .def_static("make", []() { return custom_unique_ptr<C>(new C); })
+ .def_static("make_as_object", []() { return py::cast(custom_unique_ptr<C>(new C)); });
// test_holder_with_addressof_operator
struct TypeForHolderWithAddressOf {
diff --git a/tests/test_smart_ptr.py b/tests/test_smart_ptr.py
index c662704..d275b3d 100644
--- a/tests/test_smart_ptr.py
+++ b/tests/test_smart_ptr.py
@@ -218,7 +218,10 @@
def test_move_only_holder():
a = m.TypeWithMoveOnlyHolder.make()
+ b = m.TypeWithMoveOnlyHolder.make_as_object()
stats = ConstructorStats.get(m.TypeWithMoveOnlyHolder)
+ assert stats.alive() == 2
+ del b
assert stats.alive() == 1
del a
assert stats.alive() == 0