#include "pybind11_tests.h" #include #include #include #include namespace pybind11_tests { namespace class_sh_shared_ptr_copy { template struct Foo { std::string mtxt; Foo() : mtxt("DefaultConstructor") {} Foo(const std::string &mtxt_) : mtxt(mtxt_) {} Foo(const Foo &other) { mtxt = other.mtxt + "_CpCtor"; } Foo(Foo &&other) { mtxt = other.mtxt + "_MvCtor"; } }; using FooAVL = Foo<0>; using FooDEF = Foo<1>; } // namespace class_sh_shared_ptr_copy } // namespace pybind11_tests PYBIND11_SMART_HOLDER_TYPE_CASTERS(pybind11_tests::class_sh_shared_ptr_copy::FooAVL) namespace pybind11_tests { namespace class_sh_shared_ptr_copy { TEST_SUBMODULE(class_sh_shared_ptr_copy, m) { namespace py = pybind11; py::class_(m, "FooAVL"); py::class_>(m, "FooDEF"); m.def("test_avl", []() { auto o = std::make_shared("AVL"); auto l = py::list(); l.append(o); }); m.def("test_def", []() { auto o = std::make_shared("DEF"); auto l = py::list(); l.append(o); }); } } // namespace class_sh_shared_ptr_copy } // namespace pybind11_tests