3 ms·
in the first example: ``` 10: rjk::duck<Container> c{std::vector<int>{1, 2, 3}}; 11: c.size(); // 3 12: 13: c = std::string{"hello"}; ``` Does the assi
by schaefer 3mo ago
in the first example:
```
10: rjk::duck<Container> c{std::vector<int>{1, 2, 3}};
11: c.size(); // 3
12:
13: c = std::string{"hello"};
```
Does the assignment on line 13 call the destrucor for the vector of ints created on line 10?
- RyanJK5 3mo agoYes. duck takes ownership of the vector by moving it into its internal storage. As a bonus, if you tried passing in an lvalue, it will reject the input unless you add the "copyable" trait, so it ends up mitigating some hidden copies.
- rycomb 3mo agoIs there another option? Or were you asking if it leaks memory? Maybe you were asking if it implements custom destructors? GC?
- schaefer 3mo ago> Or were you asking if it leaks memory? yeah, If variable c where of type void* instead of duck<Container>, the assignment on line 13 would leak the memory used by the vector<int>.