是否可以确保模板类大小始终为 2 ^ N
Is it possible to make sure a template class size is always 2 ^ N?
这是出于性能原因。如果我有这样的模板类
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 的幂
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 如何确保C++函数在定义之前声明(如override关键字)
- 是否可以通过C++扩展强制多个python进程共享同一内存
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 是否确保 2 个连续的 std::chrono::steady_clock::now() 不相等?
- 是否要确保一个线程修改的任何数据类型的共享变量对其他线程可见
- 如果清除了 std::map 是否确保内存被解除分配
- 使用原子指令确保映射访问安全,是否可以使用两个不同的原子对指令进行重新排序
- 是否可以确保模板类大小始终为 2 ^ N
- 是否可以验证预处理器宏以确保它是一个数字?
- 我是否应该确保在退出程序之前销毁 SDL 2.0 对象(渲染器、窗口、纹理等)
- 如何确保我的代码是ansi C,不涉及C++.像gcc这样的编译器是否可以设置为在满足C++中的功能时提示错误
- CoCreateInstance使用CLSCTX_LOCAL_SERVER是否足以确保所有应用程序将共享COM对象实例?
- 是否有一种方法来确保数组变量(unsigned int*)将在内存中
- 对接口的Release调用是否确保COM组件不受信任
- 是否可以确保省略副本