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

标签 c++

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

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/

相关文章:

c++ - 如何为 vector <string> 设置默认参数以在类中的默认构造函数中使用?

c++ - 在 C++ 程序中使用 C 库中定义的类型,命名空间类似于方案

c++ - 在行星上实现四叉树地形(Geomipmapping)

c++ - x/a 与 float 的 x*(1/a) 相同吗?

C++ Try Catch 内部循环

c++ - 如何从输出流创建 std::string?

c++ - 无法访问类 'CObject' 中声明的私有(private)成员?

c++ - 适用于维持 1000 个 TCP 连接的应用程序的 I/O 模型

c++ - Visual Studio 2012 链接错误

c++ - 段错误,共享库