std::align_val_t
限制隐式转换:
// won't compile
// std::align_val_t align = 64;
auto aln = std::align_val_t{64};
当我的代码对齐时,我应该在我的界面中保留这个隐式转换的限制吗?
允许将 size_t
参数隐式转换为 align_val_t
是一种好习惯吗?
例如:
[[no_discard]] T* make_copy_on_heap(const T (array&) [N], std::align_val_t aln )
对比
[[no_discard]] T* make_copy_on_heap(const T (array&) [N], std::size_t aln )
如果我允许后者(size_t
接口(interface)),为什么 std::align_val_t
首先要限制隐式转换?
最佳答案
align_val_t
是一个强类型枚举,它们不允许与整数之间的隐式转换。
align_val_t
从一开始就是一个 hack -- 该类型的存在只是为了防止与其他常规参数混淆。
关于c++ - 为什么 `std::align_val_t`要限制隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463113/