gpt4 book ai didi

c++ - 如何从模板类型数组中获取整数类型

转载 作者:行者123 更新时间:2023-11-30 04:42:15 25 4
gpt4 key购买 nike

我正在尝试编写一个作用域指针类,一旦它被销毁就会调用 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”

最佳答案

你要的是std::remove_extent .如果你给它一个数组,它会给你元素类型,否则它只会给你你给它的类型。看起来像

template <typename type, bool _Dx = std::is_array<type>::value>
class scoped_ptr {
private:
std::remove_extent_t<type>* m_ptr;
//...
};

另请注意,_Dx 是非法名称。所有以下划线开头且后跟大写字母的名称都保留用于实现。

关于c++ - 如何从模板类型数组中获取整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com