【发布时间】:2020-03-08 15:47:45
【问题描述】:
我正在尝试编写一个作用域指针类,该类在销毁后调用 delete。我意识到我需要检查我的指针是否指向一个数组,所以我可以调用正确的删除。 从 std::unique_ptr 获得灵感,我使用 type_traits 来检查包含类型指针的模板参数是否为数组:
template <typename type, bool _Dx = std::is_array<type>::value>
class scoped_ptr {
private:
type* m_ptr;
//...
};
template <typename type>
class scoped_ptr<type, true> {};
但是,如果我的模板参数类型是“int[]”,则代码无效,因为我不能有“int[]* m_ptr” 我怎么解决这个问题?我如何传递 int[] 参数并拥有“int* m_ptr”
【问题讨论】:
标签: c++ templates smart-pointers