C++ 模板偏特化以对每个参数进行 sizeof 或动态大小计算

C++ template partial specialization to do sizeof or dynamic size calculation of each argument

我希望能够得到每个参数的大小

class MyClass(int a, char b, std::string c)
{
  ...
}

auto x = CreateInstanceAndCalculateSize<MyClass>(1, 'c', std::string("somthing"));
std::unique_ptr<T> CreateInstanceAndCalculateSize(Types&& ... Args)
{
    size_t size = either sizeof(Arg) or Arg.length(); // I think this requires partial specialization for each possible type of arg you encounter
    return std::unique_ptr<T>(new T(std::forward<Types>(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);
}