提问人:sh- 提问时间:11/11/2023 更新时间:11/11/2023 访问量:95
压缩的 std::expected
Compressed std::expected
问:
std::expected
是 C++23 中引入的可区分联合,可以看作是它的泛化,因为它在空时存储错误值。std::optional
std::optional
现在,我认为许多类型在无效或空时已经有未使用的存储。一个简单的例子是 ,它存储指针和大小。如果指针为 null,则大小没有功能,可以保存错误值。std::span
从理论上讲,这将提供优化 的内存消耗的机会,因为不需要单独存储鉴别器(通常是布尔值)。可以将指针用作鉴别器。std::expected<std::span>
我敢肯定,当与 .std::expected
据推测,这可以通过 的部分模板专用化来利用。如果操作得当,它可能对用户是透明的。内存节省将是自动的,对于满足具有可用作鉴别器的现有成员的标准的所有类型。std::expected
现在我的问题是:标准库在设计时是否考虑了这种优化,是否有利用这种可能性的实现?哪些标准类型适合这种优化?现有的标准库实现是否已经利用了这个机会?
答: 暂无答案
评论
std::expected
std::span
std:: expected
std::span