gpt4 book ai didi

c++ - 为什么 `std::align_val_t`要限制隐式转换?

转载 作者:行者123 更新时间:2023-11-28 04:35:51 30 4
gpt4 key购买 nike

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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com