自 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_ptrconstructor ,就像上面的第一个表达式一样,我们可以使用
auto ip = make_shared<int>(12);
但是,如果我们还想将自定义删除器传递make_shared给 怎么办,是否有正确的方法来做到这一点?似乎编译器,至少 gcc,给出了一个错误,
auto ip = make_shared<int>(12, deleter);