是否可以确保模板类大小始终为 2 ^ N

Is it possible to make sure a template class size is always 2 ^ N?

本文关键字:确保 是否      更新时间:2023-10-16

这是出于性能原因。如果我有这样的模板类

template <typename T> struct quirky{ int a; T b; };

我可以强制 C++ 填充它以使 sizeof(古怪)始终为 2 ^ N 吗?

因此,例如,如果 T 是另一个整数,则无需填充,大小将为 8

如果 T 是int64_t那么它将填充 4 个字节以使其成为 16 等。

您可以添加一个构造函数或析构函数,该构造函数或析构函数对大小运行断言测试,然后依靠程序员来正确填充它。(这似乎是IMO C++方式)

这将"确保"它被正确使用。

您可以使用static_assert检查它,如果它使用错误,则会给您带来编译时错误。

。或。。。

。或者用递归模板和部分专业化做一些复杂的事情,找到一个匹配的定义,它是 2 的幂

相关文章: