std::具有非专用模板类的数组
std::array with unspecialized template class
是否可以将某种非专用的模板类作为模板参数传递给 std::array?类似的东西:
template <class T>
class Field{
};
std::array<Field> a;
或者我必须定义一些BaseField,并将其替换为IntField,StringField,FloatField...?
您可以编写一个将模板作为参数的模板(也称为模板模板参数)。模板必须专门编写以将模板作为允许它的参数,并且没有指定std::array
这样做。
您可以使用别名模板与 C++11 非常接近:
template <typename T>
struct Field {};
template <typename T>
using FieldArray5 = std::array<Field<T>,5>;
int main() {
FieldArray5<int> a0;
}
但请记住,std::array
也需要大小的模板参数。
如果你想让一个std::array
拥有不同的类型,它只能通过多态性来完成。您还可以使用对您隐藏多态性但仍能实现它的boost::any
。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 静态声明专用类的接口指针数组
- 使用数组参数进行函数专用化
- 指针和 c 样式数组变量的专用模板
- 正在初始化指向null的专用指针数组
- 未调用数组的函数专用化
- 模板专用化与数组,标准::is_array
- 从c++中的方法访问指向对象的专用指针数组
- 数组的部分模板专用化
- 部分模板专用化数组使用情况
- 从主访问指向数组的专用指针
- unique_ptr<T> 用于数组专用化的 lambda 自定义删除器
- std::具有非专用模板类的数组
- C++:数组的函数模板专用化
- 类专用成员-数组访问失败
- 数组的部分模板成员专用化
- 如何使模板函数专用化字符数组