std::unique_ptr p1(new int); std::unique_ptr p2(new int); p2=p1;
It seems here that p1 is no longer \"unique\" since p2 refer to
std::unique_ptr is non-assignable and non-copyable. You need to use std::move();
so
p1 = std::move(p2);
Have a look here for more info.