variant

可替代boost::variant的仅头文件C++11/C++14库,以类型安全方式保存多种类型之一,例如结果或错误。

分享到 X许可证: BSD-3-Clause

概述

Mapbox Variant 是面向 C++11 和 C++14 的仅头文件库,可替代 boost::variant。它以类型安全的方式持有多种类型中的一种,例如结果或错误二选一的 API 响应。它提供基于 lambda 的模式匹配、访问器,以及用于 JSON 这类树形结构的递归包装类型,且没有任何依赖。

主要特点

  • 类型安全的 variant,表示和类型或可辨识联合
  • match() 接收多个 lambda 并检查是否覆盖所有类型
  • apply_visitor 与 get() 用于访问或取出值
  • recursive_wrapper 可表达 JSON 树等递归类型

适用场景

适合想使用 variant 但不想依赖 Boost 的 C++11 或 C++14 项目。它以与 boost::variant 接口兼容为目标,但只实现实际需要的功能。

上游仓库
mapbox/variant
GitHub 上的 fork
Guo-astro/variant
上游 Star 数
385
分类
开发者工具与基础设施
编程语言
C++
许可证
BSD-3-Clause
Fork 时间
2020-11-01
同步状态
已同步上次同步 2026-09-29