Variant 总结
优质
小牛编辑
134浏览
2023-12-01
类别联合(discriminated unions)在日常编程中非常有用,这个事实无须惊讶,Boost.Variant 库提供了高效且易用的 variant
类型,它正是基于类别联合的。因为C++的联合对于很多类型很难使用(它只支持内建类型和 POD 类型),长期以来一直需要别的东西来取代它。许多创建类别联合的尝试都存在某些重要的缺点。例如,早期的尝试通常仅支持固定的一组类型,的确妨碍了维护性 和灵活性。Boost.Variant 通过模板避免了这些限制,理论上允许创建任意的 variant
类型。在处理类别联合时类型转换代码总会成为问题所在;在处理前需要测试当前值的类型,这导致了维护的麻烦。Boost.Variant 提供了简单的值取回操作以及类型安全的访问机制,这是解决问题的新颖方法。最后,效率也是早期的尝试所关心的,这个库也很好地照顾到了效率,它使用基于栈 的存储,而不是基于堆的。
Boost.Variant 是一个成熟的库,有非常多的特性,使用 variant
类型容易且高效。这是 Boost.Any 库的补充,同样应该成为你的专业C++工具箱中的一员。
Boost.Variant 的作者是 Eric Friedman 和 Itay Maman.