我们有两个std::shared_ptr指向对象的指针:
p1, 创建于std::make_shared<>().p2使用 的构造函数创建的std::shared_ptrA。
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo");
std::shared_ptr<Object> p2(new Object("foo"));
那里有很多信息表明行为p1有些p2不同(make_shared 和普通 shared_ptr 的区别,cppreference 的注释部分等),并且在某些情况下,一种方法比另一种方法有优势。
问题:是否可以在程序执行p1期间p2确定它们是通过std::make_shared构造函数还是通过构造函数创建的?
如果你不能肯定地说,你可以尝试“深入挖掘”并做出有根据的猜测吗?
C++ 标准并不重要(尽管是 C++23),如果特定于编译器的解决方案使任务更容易,那么它也很好。