You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当值和错误类型均为平凡可复制时,std::expected是否应是平凡可复制的?

关于std::expected是否应为平凡可复制类型的疑问

当值和错误类型均为平凡可复制类型时,不同编译器对std::expected的平凡可复制性判定存在差异:

  • GCC和Clang中的std::expected不满足std::is_trivially_copyable_v
  • MSVC中的std::expected满足std::is_trivially_copyable_v
  • 第三方实现tl::expected在所有编译器上均被判定为平凡可复制

这是在从tl::expected迁移到std::expected时发现的问题,目前无法通过搜索明确C++标准规定的正确行为。

代码示例

// 在GCC、Clang和MSVC上均可通过
static_assert(std::is_trivially_copyable_v<tl::expected<int, int>>);
// 仅在MSVC上可通过,在GCC和Clang上失败
static_assert(std::is_trivially_copyable_v<std::expected<int, int>>);

测试环境

通过Compiler Explorer进行测试,覆盖GCC、Clang、MSVC三种主流编译器。

内容的提问来源于stack exchange,提问作者RaitRaak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:49:57