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

时间:2016-02-07 11:59:45

标签: c++

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

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

我可以强制c ++填充它以使sizeof(古怪)总是2 ^ N吗?

所以例如,如果T是另一个int,那么不需要填充,大小将是8

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

1 个答案:

答案 0 :(得分:0)

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

这将“确保”它被正确使用。

您可以使用static_assert进行检查,如果使用错误,可能会出现编译时错误。

......或......

...或者使用递归模板和部分特化进行复杂的搜索,找到一个2的幂的匹配定义