这是出于性能原因。如果我有这样的模板类
template <typename T> struct quirky{ int a; T b; };
我可以强制 C++ 对其进行填充以使 sizeof(quirky) 始终为 2 ^ N 吗?
例如,如果 T 是另一个 int 则不需要填充并且大小为 8
如果 T 是 int64_t 那么它将填充 4 个字节使其成为 16 等等。
最佳答案
您可以添加一个构造函数或析构函数来对大小运行断言测试,然后依靠程序员正确填充它。 (这似乎是 C++ 方式 IMO)
这将“确保”它被正确使用。
您可以使用 static_assert
检查它,如果使用不当,它会给您一个编译时错误。
……或者……
...或者做一些与递归模板和偏特化相关的事情来找到一个匹配的定义,它是 2 的幂
关于c++ - 是否可以确保模板类大小始终为 2 ^ N?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253181/