C++ C++;模板部分专门化用于对每个参数进行sizeof或动态大小计算
我希望能够得到每个参数的大小C++ C++;模板部分专门化用于对每个参数进行sizeof或动态大小计算,c++,templates,metaprogramming,C++,Templates,Metaprogramming,我希望能够得到每个参数的大小 class MyClass(int a, char b, std::string c) { ... } auto x = CreateInstanceAndCalculateSize<MyClass>(1, 'c', std::string("somthing")); 类MyClass(int a、char b、std::string c) { ... } auto x=CreateInstanceAndCalculateSize(1,'c',s
class MyClass(int a, char b, std::string c)
{
...
}
auto x = CreateInstanceAndCalculateSize<MyClass>(1, 'c', std::string("somthing"));
类MyClass(int a、char b、std::string c)
{
...
}
auto x=CreateInstanceAndCalculateSize(1,'c',std::string(“somthing”);
std::unique\u ptr CreateInstanceAndCalculateSize(类型和参数)
{
size\u t size=sizeof(Arg)或Arg.length();//我认为这需要对遇到的每种可能的Arg类型进行部分专门化
返回std::unique_ptr(新的T(std::forward(Args)…);
}
您可能正在寻找以下内容:
template <typename T>
size_t MySizeOf(const T& t) { return sizeof(T); }
template <>
size_t MySizeOf<std::string>(const std::string& s) { return s.size(); }
template <typename... Types>
size_t CalculateSize(Types&& ... Args)
{
return ... + MySizeOf(Args);
}
模板
size_t MySizeOf(const t&t){return sizeof(t);}
模板
size_t MySizeOf(const std::string&s){return s.size();}
模板
大小\u t计算大小(类型和参数)
{
返回…+MySizeOf(Args);
}
是否要查找参数包中的元素数?这将是sizeof…(Args)
您实际使用size
做什么?不,我想计算每个参数的大小。我将使用它进行日志记录,然后根据大小决定如何/在何处分配它的算法。我要找的不是…的尺寸。我正在为基元类型寻找sizeof,但随后为我的数据类型做一些事情代码>这将为您提供一个按顺序排列的C样式数组。还是它们必须是编译时常量?我需要部分专门化。。。这意味着对于int->4。。。double->8,mydatatype->callSomeFunctionForDeterminingSize(instanceOfMyDataType)
template <typename T>
size_t MySizeOf(const T& t) { return sizeof(T); }
template <>
size_t MySizeOf<std::string>(const std::string& s) { return s.size(); }
template <typename... Types>
size_t CalculateSize(Types&& ... Args)
{
return ... + MySizeOf(Args);
}