gpt4 book ai didi

c++ - 获取 C++ 模板参数包的总大小(以字节为单位)

转载 作者:搜寻专家 更新时间:2023-10-31 01:25:07 25 4
gpt4 key购买 nike

我正在尝试创建一个以字节为单位返回参数包总大小的函数,但我找不到解决方案!

template <typename... TTypes>
struct Test {
constexpr size_t getPackSizeInBytes() const {
// sizeof(TTypes) gives `unexpanded pack` error
}
};

// What I'm hoping for:
Test<uint8, uint16> test;
std::cout << test.getPackSizeInBytes() << std::endl;
// Should output 3;

感谢您的帮助!

最佳答案

您可以在 C++17 中使用一元折叠:

return (sizeof(TTypes) + ... + 0);

如果您没有 C++17,那么您必须以更手动但更丑陋的方式解压它:

int sum = 0;
using I = std::size_t[];
(void)(I{0u, sum += sizeof(TTypes)...});
return sum;

关于c++ - 获取 C++ 模板参数包的总大小(以字节为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57246592/

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