自 C++11 以来,由于多种原因,开发人员倾向于将智能指针类用于动态生命周期对象。并且对于那些新的智能指针类,标准,甚至建议不要使用new
他们建议使用make_shared
或make_unique
避免一些容易出错的运算符。
如果我们喜欢使用智能指针类,like shared_ptr
,我们可以构造一个like,
shared_ptr<int> p(new int(12));
我们还想将自定义删除器传递给智能指针类,
shared_ptr<int> p(new int(12), deleter);
另一方面,如果我们喜欢使用make_shared
来分配,例如。int
, 而不是 usenew
和shared_ptr
constructor ,就像上面的第一个表达式一样,我们可以使用
auto ip = make_shared<int>(12);
但是,如果我们还想将自定义删除器传递make_shared
给 怎么办,是否有正确的方法来做到这一点?似乎编译器,至少 gcc,给出了一个错误,
auto ip = make_shared<int>(12, deleter);