文件名称:scelta :(实验性)用于变体和可选类型的语法糖
文件大小:114KB
文件格式:ZIP
更新时间:2024-02-20 14:16:54
lambda cpp boost cpp14 visit
塞尔塔 variant和optional C ++ 17零开销语法糖。 目录 总览 std::variant和std::optional被引入C ++ 17的标准库。 它们是求和类型,可以大大提高类型的安全性和性能。 但是,它们存在一些问题: 一些常见操作(例如访问)的语法不尽如人意,并且需要大量样板。 定义和使用递归variant或optional类型并非易事,并且需要大量样板。 std::optional不支持访问。 std::variant和std::optional的接口与其他一些常用的ADT实现不同-互操作性需要大量样板。 scelta旨在通过提供零开销的语法糖来解决所有附带的问题: 自动检测并均化所有可用的variant和optional实现,并提供与实现无关的单个接口。 为访问和递归访问提供类似于“模式匹配”的语法,这对variant和optional都适用。 提供基于直观占位符的递归variant和optional类型定义。 为optional类型(包括infix语法)提供诸如map和and_then类的单子运算。 实施独立 scelta可以通过以下