数组的部分模板专用化
Partial template specialization for arrays
对此进行了搜索,但找不到类似的问题。如果有,请结束这个问题。这不是我真正的代码,只是一个示例:-
#include <iostream>
// Normal template class with a destructor
template <class T> class Test
{
public:
~Test() { std::cout << "Normal n";}
};
// Partial specialization for arrays
template<class T> class Test<T[]>
{
public:
~Test() { std::cout << "Array n"; }
};
int main()
{
Test<int[3]> i;
}
当我编译它时,不会调用数组的专用版本。如果我用替换模板
template<class T> class Test<T[3]>
{
public:
~Test() { std::cout << "Array n"; }
};
然后它确实调用了专门化,但我希望它能为任何数组调用,而不仅仅是指定大小的数组。有没有什么方法可以编写一个专用于所有数组的专门化?
使用额外的非类型参数捕获大小:
#include <iostream>
template <class T> class Test
{
public:
~Test() { std::cout << "Normal n";}
};
template<class T, size_t N> class Test<T[N]>
{
public:
~Test() { std::cout << "Array " << N << 'n'; }
};
int main()
{
Test<int[3]> i; // Array 3
Test<int[5]> j; // Array 5
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 静态声明专用类的接口指针数组
- 使用数组参数进行函数专用化
- 指针和 c 样式数组变量的专用模板
- 正在初始化指向null的专用指针数组
- 未调用数组的函数专用化
- 模板专用化与数组,标准::is_array
- 从c++中的方法访问指向对象的专用指针数组
- 数组的部分模板专用化
- 部分模板专用化数组使用情况
- 从主访问指向数组的专用指针
- unique_ptr<T> 用于数组专用化的 lambda 自定义删除器
- std::具有非专用模板类的数组
- C++:数组的函数模板专用化
- 类专用成员-数组访问失败
- 数组的部分模板成员专用化
- 如何使模板函数专用化字符数组