c++模板语法说明
Explanation on c++ template syntax
我看到了以下写boost的帖子::multi_array到hdf5数据集,无法理解Leo Goodstadt第一个答案中模板使用的语法。不幸的是,我没有足够的声誉来直接评论那里给出的答案,这就是为什么我创建了这个单独的问题。
据我所知,有一个结构是用静态方法type()创建的,它返回相应的类型。
然后,此泛型结构将被具有固定类型的结构覆盖。但是花括号里到底写了什么,也就是说它的意思是什么?例如,以下内容的含义是什么:
{ H5::IntType type { H5::PredType::NATIVE_CHAR
};
};
在字符模板的第一个定义中:
template<> struct get_hdf5_data_type<char> {
H5::IntType type {
H5::PredType::NATIVE_CHAR
};
};
我已经在下面复制了模板定义的基本部分,但可能更容易查看原始帖子以获得清晰的图片。
template<typename T> struct get_hdf5_data_type {
static H5::PredType type() {
//static_assert(false, "Unknown HDF5 data type");
return H5::PredType::NATIVE_DOUBLE;
}
};
template<> struct get_hdf5_data_type<char> {
H5::IntType type { H5::PredType::NATIVE_CHAR };
};
template<> struct get_hdf5_data_type<long long> {
H5::IntType type { H5::PredType::NATIVE_LLONG };
};
template<> struct get_hdf5_data_type<unsigned long long> {
H5::IntType type { H5::PredType::NATIVE_ULLONG };
};
template<> struct get_hdf5_data_type<int8_t> {
H5::IntType type { H5::PredType::NATIVE_INT8 };
};
卷曲语法是初始化
H5::IntType type { H5::PredType::NATIVE_CHAR };
类似于
H5::IntType type = H5::PredType::NATIVE_CHAR;
我不熟悉H5,但OP将其用作hdf_data_type.type
,这只是指之前在您的专业列表中定义的特定类型。
现在hdf_data_type
需要是所提供的模板专业化之一,例如get_hdf5_data_type<char>
,以提供类型的定义。
通用模板中注释掉的static_assert可以用作未发现已知专业化的标记,并且对象hdf_data_type
没有用处。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 当使用通配符和null指针调用函数时,对输出的说明
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 关于C++中具有多重继承"this"指针的说明
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 16 位到 10 位转换代码说明
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 赋值到类型和空大括号. 语法说明
- c++模板语法说明
- 模板语法说明
- C++矩形类关于语法的说明
- 语法说明
- 运算符重载语法说明