【发布时间】:2015-02-10 05:58:53
【问题描述】:
我正在查看以下帖子 write a boost::multi_array to hdf5 dataset,但无法理解 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 };
};
【问题讨论】:
-
不幸的是,我没有足够的声誉直接评论那里给出的答案,这就是我创建这个单独问题的原因。 - 哈利路亚,系统有效!问题确实属于新问题。