C++ 使用模板类绑定类型元数据c++;
我有许多数据类型,其中有一些与之相关的元数据,比如表大小和格式。我想使用模板查找来获取此元数据,即C++ 使用模板类绑定类型元数据c++;,c++,templates,C++,Templates,我有许多数据类型,其中有一些与之相关的元数据,比如表大小和格式。我想使用模板查找来获取此元数据,即 struct C1 {} struct C2 {} enum class Format { Format1, Format2, }; template<typename T, int A, Format F> class DataTypeMeta { constexpr int table_size = A; constexpr Format
struct C1
{}
struct C2
{}
enum class Format
{
Format1,
Format2,
};
template<typename T, int A, Format F>
class DataTypeMeta
{
constexpr int table_size = A;
constexpr Format data_format = F;
};
class Bar
{
public:
void Configure(Format f, int sz);
template<typename T>
void UploadData(std::vector<T> data){...}
}
template<typename T>
Bar foo(vector<T> data)
{
Bar obj;
obj.Configure(DataTypeMeta<T>::format, DataTypeMeta<T>::table_size);
obj.UploadData(data);
return obj;
}
int main()
{
std::vector<C1> data;
foo(data);
}
结构C1
{}
结构C2
{}
枚举类格式
{
格式1,
格式2,
};
模板
类DataTypeMeta
{
constexpr int table_size=A;
constexpr Format data_Format=F;
};
分类栏
{
公众:
无效配置(格式f,int sz);
模板
无效上载数据(std::vector data){…}
}
模板
Bar-foo(矢量数据)
{
Bar obj;
配置(DataTypeMeta::format,DataTypeMeta::table_size);
对象上传数据(数据);
返回obj;
}
int main()
{
std::矢量数据;
foo(数据);
}
我如何实现这个DataTypeMeta类或将其专门化为C1、C2等类型您似乎想以某种方式实现traits: 看见
更多解释(或搜索特征)为什么?您可以轻松地将
表格大小
和数据格式
添加到C1
和C2
,而无需任何额外的类。