@@ -16,15 +16,21 @@ namespace test_mi_debug {
16
16
17
17
struct Base0 {
18
18
virtual ~Base0 () = default ;
19
+ Base0 () = default ;
20
+ Base0 (const Base0 &) = delete ;
19
21
};
20
22
21
23
struct Base1 {
22
24
virtual ~Base1 () = default ;
23
25
std::vector<int > vec = {1 , 2 , 3 , 4 , 5 };
26
+ Base1 () = default ;
27
+ Base1 (const Base1 &) = delete ;
24
28
};
25
29
26
30
struct Derived : Base1, Base0 {
27
31
~Derived () override = default ;
32
+ Derived () = default ;
33
+ Derived (const Derived &) = delete ;
28
34
};
29
35
30
36
} // namespace test_mi_debug
@@ -50,10 +56,27 @@ TEST_SUBMODULE(mi_debug, m) {
50
56
51
57
m.def (" make_derived_as_base0" , []() -> std::shared_ptr<Base0> {
52
58
auto ret_der = std::make_shared<Derived>();
59
+ printf (" \n LOOOK [%lu] %s:%d\n " , (std::size_t ) ret_der.get (), __FILE__, __LINE__);
60
+ fflush (stdout);
53
61
auto ret = std::dynamic_pointer_cast<Base0>(ret_der);
62
+ printf (" \n LOOOK [%lu] %s:%d\n " , (std::size_t ) ret.get (), __FILE__, __LINE__);
63
+ fflush (stdout);
54
64
return ret;
55
65
});
56
66
67
+ m.def (
68
+ " make_derived_as_base0_raw_ptr" ,
69
+ []() {
70
+ auto ret_der = new Derived{};
71
+ printf (" \n LOOOK [%lu] %s:%d\n " , (std::size_t ) ret_der, __FILE__, __LINE__);
72
+ fflush (stdout);
73
+ auto ret = dynamic_cast <Base0 *>(ret_der);
74
+ printf (" \n LOOOK [%lu] %s:%d\n " , (std::size_t ) ret, __FILE__, __LINE__);
75
+ fflush (stdout);
76
+ return ret;
77
+ },
78
+ py::return_value_policy::take_ownership);
79
+
57
80
// class_ OK
58
81
// classh FAIL
59
82
m.def (" get_vec_size_raw_ptr_base0" , [](const Base0 *obj) -> std::size_t {
@@ -66,7 +89,11 @@ TEST_SUBMODULE(mi_debug, m) {
66
89
67
90
// class_ OK
68
91
// classh FAIL
69
- m.def (" get_vec_size_raw_ptr_derived" , [](const Derived *obj) { return obj->vec .size (); });
92
+ m.def (" get_vec_size_raw_ptr_derived" , [](const Derived *obj) {
93
+ printf (" \n LOOOK [%lu] %s:%d\n " , (std::size_t ) obj, __FILE__, __LINE__);
94
+ fflush (stdout);
95
+ return obj->vec .size ();
96
+ });
70
97
71
98
// class_ OK
72
99
// classh FAIL
0 commit comments