这是出于性能原因。如果我有这样的模板类
template <typename T> struct quirky{ int a; T b; };
我可以强制c ++填充它以使sizeof(古怪)总是2 ^ N吗?
所以例如,如果T是另一个int,那么不需要填充,大小将是8
如果T是int64_t那么它将填充4个字节以使其等等。
答案 0 :(得分:0)
你可以添加一个构造函数或析构函数来对大小运行断言测试,然后依靠程序员来正确填充它。 (这似乎是C ++的IMO方式)
这将“确保”它被正确使用。
您可以使用static_assert
进行检查,如果使用错误,可能会出现编译时错误。
......或......
...或者使用递归模板和部分特化进行复杂的搜索,找到一个2的幂的匹配定义