不能专门化结构
Cannot specialize struct
为什么这不起作用?
template <class T>
struct Low;
template <>
struct Low<int> {};//Here I'm trying to specialize for int
int main()
{
Low<1> a;
}
Low<int> a;
将起作用 - 您的模板采用类型而不是整数参数。
Low<1> a;
您的类模板Low
需要类型,而不是整数值!
如果要以这种方式使用,则必须将类模板定义为:
template <int N>
struct Low {};
这允许您编写Low<1>
、Low<2>
、Low<400>
等。
如果将Low
定义为,
template <class T>
struct Low;
然后,您必须在实例化它时提供一个类型。例如,Low<char>
、Low<unsigned int>
等。
因此,请注意它们在每种情况下的定义方式和实例化方式的差异!
Low<1>
和 Low<int>
是有区别的。
您需要为 Low<1>
编写专用化,但这是不可能的,因为原始模板将类型作为第一个参数而不是值。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何为特定数量的模板参数专门化可变参数模板结构
- 使用enable_if专门化结构模板
- g++和clang++在结构/类专门化中具有非类型参数的不同行为
- PTR到结构体和PTR到结构体的向量的模板方法专门化
- 使用模板类作为参数专门化模板结构
- 一个模板专门化用于pod,一个模板专门化用于类层次结构,在其他情况下出现错误
- 如何从结构中提取索引最高的专门化
- 不能专门化结构