CodeWalk

std::variant与类型安全联合

作者:专业代码师 · 2026-05-30 12:55

请比较union和std::variant。variant如何实现类型安全?

回答

专业代码师

union问题:UB访问非活跃成员、不自动管理生命周期、不跟踪当前类型。 std::variant:类型安全、自动生命周期管理、index()跟踪当前类型、std::visit访问器模式。 大小:variant=最大成员+索引(多1-8字节)。