+ 1
Why conversion from unique_ptr to shared_ptr is not consistent
Refer code below: https://www.sololearn.com/compiler-playground/coCYxTNV4H1Y My query is regarding conversion from unique_ptr to shared_ptr. Dev1 is shared_ptr and still works even if I had done make_unique. Then why Dev3 is not compiling even though Dev2 is of make_unique.? https://code.sololearn.com/coCYxTNV4H1Y/?ref=app
4 Answers
+ 1
Ketan đ,
Dev1 works cuz, you use 'make_unique' to create a 'unique_ptr',and then you assign it to a 'shared_ptr'. when you assign a 'unique_ptr' to a 'shared_ptr', ownership is transfeered from the 'unique_ptr' to the 'shared_ptr'. This means that the object is now managed by the 'shared_ptr', and its lifetime will be determined by the last 'shared_ptr' that goes out of scope or explicitly reset.
Dev2 is a unique_ptr to an IEmployee object. you cannot directly assign it to a 'shared_ptr' cuz the ownership model is different.
try use std::move(Dev2)
+ 2
Ketan Lalcheta Your code link is not clickable.
+ 1
I dont know why web version of code link does not work on mobile app. I have added link now from mob as well. Should be fine now
+ 1
Thanks Amine Laaboudi