比较shared_ptr实例的有效情况

Jac*_*ohn 3 equality shared-ptr c++11

在什么情况下比较shared_ptr实例而不是shared_ptr管理的underly lie类型是有效的?

举个例子,在下面的代码运行之后,是否会出现personset的大小为2的情况?

shared_ptr<person> p0 = make_shared<person>(....);
shared_ptr<person> p1 = p0;

set<shared_ptr<person>> personset;

personset.insert(p0);
personset.insert(p1);
Run Code Online (Sandbox Code Playgroud)

Zam*_*son 5

没有可行的理由比较实例.默认情况下,is_ shared_ptrs将通过指向控制块的底层指针(通过.get方法)执行相等/不等式比较器.

http://en.cppreference.com/w/cpp/memory/shared_ptr/operator_cmp