gpt4 book ai didi

c++ - c++模板语法解释

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:15 26 4
gpt4 key购买 nike

我正在查看以下帖子 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 };
};

最佳答案

curly 语法是初始化

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 的标记。没有用。

关于c++ - c++模板语法解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28419879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com