Spirit x3 无法传播可选<向量> 类型的属性

2023-12-04

一个简单的解析器Coliru。解析器-(+x3::alpha)应该能够传播类型的属性boost::optional<std::string>就像齐一样。但它无法编译。

std::string const input = "abc";
boost::optional<std::string> attr;
if(x3::parse(boost::begin(input),boost::end(input),
    -(+x3::alpha),
    attr)) {
    std::cout<<"match!"<<std::endl;
}
else {
    std::cout<<"NOT match!"<<std::endl;
}

我不认为“应该能够……像 Qi 那样”这一规范性主张没有道理。 X3 不是 Qi 的演变,有很好的理由(比如这个)。

一个经常重复出现的模式是,在更复杂的传播场景中需要类型提示。丑陋的冗长方式可能是这样的:

    -(x3::rule<struct _, std::string> {} = +x3::alpha),

Live On Coliru

或者你可以使用黑客我之前描述过:

namespace {
    template <typename T>
    struct as_type {
        template <typename Expr>
            auto operator[](Expr&& expr) const {
                return x3::rule<struct _, T>{"as"} = x3::as_parser(std::forward<Expr>(expr));
            }
    };

    template <typename T> static const as_type<T> as = {};
}

Live On Coliru

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spirit x3 无法传播可选<向量> 类型的属性 的相关文章

  • 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

    如果我知道 PID 和 VID 我会尝试找到查找 COM 端口名称的正确方法 到目前为止 我写了解决方法 但我不相信没有更优雅和正确的方法 顺便说一句 我知道我可以使用 REGEX 编写此代码只是为了测试解决方法 我知道还有很大的改进空间
  • 从 C 中的 char* 获取单个字符

    有没有办法在 C 中逐字符遍历或从 char 中提取单个字符 考虑以下代码 现在获得单个角色的最佳方式是什么 建议我一种不使用任何字符串函数的方法 char a STRING 其他方式 char i for i a i i i points
  • dup2() 和 exec()

    include
  • 使用空函数调用 hana::is_valid 的用途是什么?

    Boost Hana https www boost org doc libs 1 61 0 libs hana doc html index html offers boost hana is valid https www boost
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • 我要恢复我的记忆!我怎样才能真正处理一个控件?

    我正在制作一个应用程序 它创建大量的窗口控件 按钮和标签等 它们都是通过函数动态生成的 我遇到的问题是 当我删除控件并处置它们时 它们不会从内存中删除 void loadALoadOfStuff while tabControlToClea
  • 多维数组和指向指针的指针

    创建多维数组时char a 10 10 根据我的书 它说你必须使用类似于char a 10 将数组传递给函数 为什么必须这样指定长度 您不是只是将双指针传递给 with 并且该双指针不是已经指向分配的内存吗 那么为什么参数不能是char a
  • 从套接字读取 C HTTP

    我想知道如何判断是否已从套接字接收到所有数据 这是一个简单的网络代理 现在我正在处理请求部分 所以发送的内容应该以 r n r n 结尾 我不知道请求会持续多久 我在这里读过一些帖子 说我应该检查读取函数是否返回 0 但其他人说0只在客户端
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 我可以在 C++ 中重写非虚函数吗

    我想知道我可以重写 C 中的非虚函数吗 因为我在使用 C 时发现了这个问题override关键字我的代码如下 class A public void say cout lt lt From A n class B public A publ
  • 执行存储过程时 ExecuteNonQuery() 返回 -1

    我正在尝试在 Visual Studio 中执行存储过程 下面给出 CREATE PROCEDURE dbo addStudent stuName varchar 50 address varchar 100 tel varchar 15
  • 为什么 httpRuntime targetFramework="4.5" 禁止抓取 .ASPXAUTH cookie?

    当我的 web config 具有以下 httpRuntime 时 我的控制器无法获取 cookie ASPXAUTH 它似乎能够获取任何其他 cookie 无论带或不带句点前缀 如果我删除下面的行 它就可以正常工作
  • Nuget - 对象引用未设置为对象的实例

    我在 vs 2015 中遇到了 nuget 包管理器的问题 像Unity这样的一些包已经安装没有问题了 某些软件包 例如 EF 在安装时出现问题 像 Automapper 这样的一些软件包也有同样的问题 但是当我安装这个软件包的另一个版本时
  • 从视图模型调用方法的命令

    好吧 我倾向于避免使用命令 因为它们总是让我感到困惑 但我正在进行一个新项目 并且正在尝试正确构建它 并且在我看来没有任何代码隐藏 基本上我现在想做的就是连接一个按钮来触发一个命令 在我的视图模型上执行一些操作 但不知何故 如此简单的事情仍
  • 如何在 Visual Studio 2010 Express 中引用 system.drawing?

    我对此有点陌生 我的印象是要绘制我创建的矩形 我需要使用 system drawing graphics 问题是 我收到错误 命名空间 System 中不存在类型或命名空间名称 drawing 您是否缺少程序集引用 当我右键单击解决方案资源
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • 如何组合||条件语句中的运算符[重复]

    这个问题在这里已经有答案了 代替 if foo 1 foo 5 foo 9 我喜欢将它们组合起来 类似于以下内容 这不起作用 if foo 1 5 9 那可能吗 不幸的是不是 你最好的选择是创建一个扩展方法 public static bo
  • Gridview 错误:对 Bind 的调用格式不正确

    我有以下 gridview 代码
  • 用于 nmap 输出的 C++ xml 解析器

    我是 nmap 的新手 我在 nmap 教程中看到 https nmap org book man output html https nmap org book man output html oX 选项可用于获取 xml 格式的 nma
  • char[length]初始化并处理

    我定义了一个字符数组 char d 6 如果我在以下方面有误 请纠正我 此时没有为变量分配内存d 现在我要初始化它 d aaaaa 这种初始化之后 就不需要释放内存了 它将自动完成 我怎么知道是否char 被初始化了吗 我正在寻找类似的模式

随机推荐

  • 打开项目会更改 iis 设置

    我有这个问题 在开发时我使用 git 并经常克隆到一个新文件夹来修复较小的错误 问题是 一旦我打开项目 Visual Studio 就会更改 IIS 设置以指向新文件夹 有什么办法可以防止这种情况发生吗 比如打开项目时按住ctrl键什么的
  • 如何在 android 中向 EditText 添加分页行?

    是否可以在a中显示分页行EditText 我的意思是这些行 就说我的EditText大小为 500 x 500 像素 我希望这些线条在 500 x 500 的正方形中可见 有没有一种构建方法可以做到这一点 我已经尝试过谷歌但找不到答案 我想
  • JLayer Mono Mp3 到 PCM 解码

    我目前正在使用 javalayer 1 1 进行 mp3 解码 所以我想从我的 44100 Hz 16 位 Mp3 接收原始 PCM 数据 它与立体声 mp3 完美配合 但我在单声道 mp3 上遇到奇怪的问题 这里有一些代码 InputSt
  • 如何通过 Excel 网络查询从 Google Directions API 提取距离?

    我在 Excel 中有一个长长的出发地和目的地列表 使用 webquery 我可以填写城市和邮政编码以提供如下 webquery 这会返回一个很长的 XML 文件 但我需要的只是距离 有没有办法只提取距离值 或者我应该运行一个宏脚本来一一提
  • 为什么alert出现在document.write之前?

    当按照编写的顺序执行以下代码时 为什么警报仍然在第一个 即使它在第二行 谢谢 document write Hello World alert You wrote to the document Javascript 被解释 所以它是逐行执
  • 使用保存的模型对象进行预测

    我正在尝试使用之前保存的模型来使用 R 中的预测函数 使用以下代码创建并保存模型 lrModel1 lt glm response data modelData family binomial model TRUE save lrModel
  • 如果元素中有内容,如何在 Javascript/jQuery 中添加类?

    我正在开发一个网站 我想检查元素中是否有任何内容 下面是我的 html 代码 我已经提到过条件 1 where opacity pointseven如果类应该通过脚本添加类featured block title and featured
  • jPanel 的背景图像不工作

    我是制作 GUI 的新手 所以我决定尝试使用 Eclipse 的 Windows 构建器 虽然很棒 但我确实有一些疑问 我一直在寻找 但我找不到找到将背景图像添加到我的 菜单 的好方法 例如我尝试过这个 public Menu setDef
  • C# 在两个数字之间切换?

    我正在尝试制作一个智能 switch 语句 而不是使用 20 多个 if 语句 我试过这个 private int num switch num case 1 10 Return number is 1 through 10 break d
  • Mongo 查询失败,错误代码为 13 并显示错误消息“未授权”

    当我尝试对 mLab 上的 mongo 实例进行查询时发生错误 我从 Spring Boot 应用程序请求它 与数据库的连接稳定 下面是来自控制台的日志 监视器线程成功连接到服务器 描述为 ServerDescription address
  • 将Web应用程序部署到iis时出现问题

    使用 webmatrix 构建了一个 Web 应用程序 尝试在本地部署到 iis 5 1 以进行测试 因此我将其添加到我的 wwwroot 文件夹中不起作用 然后我创建了一个虚拟目录 主页可以使用此功能 但我使用网络助手创建的登录名不起作用
  • PowerShell:-替换、正则表达式和 ($) 美元符号问题

    我正在将数千行批处理代码转换为 PowerShell 我正在使用正则表达式来帮助完成此过程 问题的部分代码是 2 更换后仅显示 2并且不会扩展变量 我还对替换的第二部分使用了单引号 而不是转义变量 结果相同 origString IF I
  • 空检查不会导致 Dart 中的类型提升

    我正在升级一个基于Flutter框架的个人包 我注意到here在 Flutter Text 小部件源代码中存在空检查 if textSpan null properties add textSpan toDiagnosticsNode na
  • Mailgun API 仅适用于一封电子邮件

    我正在使用 PHP 和 Mailgun API 制作电子邮件订阅表格 但我只能将电子邮件发送到我在 mailgun com 创建帐户时使用的主电子邮件地址 当我用该电子邮件填写表格时 我会收到确认信 但它不适用于其他电子邮件 为什么会这样呢
  • FQL 流不返回限制定义的帖子数

    I tried SELECT post id actor id target id message likes FROM stream WHERE source id me LIMIT 100 它返回 81 而不是 100 个帖子 然后我尝
  • 无法通过 phpmyadmin 导入数据库 文件大小太大

    我一直在尝试通过 phpMyAdmin 导入数据库 我的数据库文件是a sql它的大小是 1 2 GB 我正在尝试将其导入本地 并且 phpMyAdmin 说 您可能尝试上传过大的文件 请参阅文档以了解解决此限制的方法 请帮助我真的需要这个
  • 如何向现有的 joomla 2.5 组件添加新视图(以及新的菜单项类型)?

    也许我想添加一个新的view 还有一个新的Menu Item Type到内容组件 请问步骤是什么 UPDATE 问题 由 ValentinDespa 您想要扩展 com content 功能或者想要覆盖 查看或构建一个执行某些操作的新组件
  • 如何对抽象类进行单元测试:使用存根扩展?

    我想知道如何对抽象类和扩展抽象类的类进行单元测试 我应该通过扩展抽象类 删除抽象方法来测试抽象类 然后测试所有具体方法吗 然后只测试我重写的方法 并在单元测试中测试扩展我的抽象类的对象的抽象方法 我是否应该有一个可用于测试抽象类的方法的抽象
  • Pandas read_excel:正确解析Excel日期时间字段[重复]

    这个问题在这里已经有答案了 我将以下示例数据存储在 Excel 文件中 CLAIM CODE1 AGE DATE 7538 359 71 28 11 2019 7538 359 71 28 11 2019 540 428 73 16 10
  • Spirit x3 无法传播可选<向量> 类型的属性

    一个简单的解析器Coliru 解析器 x3 alpha 应该能够传播类型的属性boost optional