Я смотрел следующее сообщение write a boost::multi_array to hdf5 dataset и не мог понять синтаксис, используемый для шаблонов в первом ответе Льва Гудстадта. К сожалению, у меня недостаточно репутации, чтобы прокомментировать прямо ответ на этот вопрос, поэтому я создал этот отдельный вопрос.Объяснение синтаксиса шаблона C++
Насколько я понял, существует структура, созданная со статическим методом 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 };
};
* К сожалению, у меня недостаточно репутации, чтобы прокомментировать прямо ответ на этот вопрос, поэтому я создал этот отдельный вопрос. * - Аллилуйя, система работает! Вопросы относятся к новым вопросам. – chris