Clang 在折叠表达式中找不到模板二元运算符

2024-03-12

这是我连接元组的二元运算符:

template <class... Args1, class... Args2>
constexpr decltype(auto) operator+(const std::tuple<Args1...> &tup1,
                                   const std::tuple<Args2...> &tup2) {
   return std::tuple_cat(tup1, tup2);
}

它在具有两个元组的两个编译器(gcc、clang)上完美运行:

template <class Arg1, class Arg2>
constexpr decltype(auto) concat_test(Arg1 &&arg1, Arg2 &&arg2) {
   return arg1 + arg2;
}

但是当我尝试在折叠表达式中使用它时,如下所示:

template <class... Args>
constexpr decltype(auto) multiple_concat(Args &&... args) {
   return (args + ...);
}

gcc 7.1.1 编译它时没有任何错误,这与 clang 5.0 不同,它会产生错误输出:

错误:调用函数“operator+”,该函数在模板定义中不可见,也无法通过参数相关的查找找到

返回(参数+...);

注意:在函数模板特化'multiple_concat ' 的实例化中请求这里

多重连接(tup1,tup2);

注意:“operator+”应在调用站点之前声明

constexpr decltype(自动)operator+(const std::tuple &tup1, const std::tuple &tup2)

这段代码格式错误吗? clang 到底在说什么?


由于其他答案没有出来并说:代码很好。这是一个由来已久的Clang https://bugs.llvm.org/show_bug.cgi?id=30590 bug https://bugs.llvm.org/show_bug.cgi?id=30738,影响 11 之前的版本。

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

Clang 在折叠表达式中找不到模板二元运算符 的相关文章

随机推荐

  • 嵌入模板上的任何指令均未使用属性绑定 ngif

    我正在 Angular Angular2 RC4 中创建一个简单的应用程序 但我发现很难在 Nodejs 中使用实时服务器运行该应用程序 我想帮助您了解如何解决 Chrome 控制台中出现的错误 Chrome 控制台出错 browser a
  • 检查一个数据帧是否是另一个数据帧的重新排序[重复]

    这个问题在这里已经有答案了 我有两个在两个不同场合生成的数据帧 但我怀疑它们是相等的 两者具有相同的行数和列数 从视觉上看它们似乎是相同的 除了行的排序方式不同 两者都没有可以重新排序的 ID 列 我能做的最好的事情就是通过process
  • 使用 RX Java 获取过滤器索引或第一个的优雅方法

    我正在练习 RX Java 想要获取与过滤器匹配的项目在数组中的位置 我看不到任何明显的方法来做到这一点 我正在考虑压缩范围和可迭代可观察之类的东西 但它很快就变得比 for 循环更加冗长和复杂 过去有mapWithIndex and zi
  • 将 Firebase DB 与本地数据库结合使用

    在我的应用程序中我有SQLite db 我想在用户的设备之间引入同步 Firebase DB看起来是一个可以接受的解决方案 但是Firebase DB首先是云数据库 因此 如果用户拒绝身份验证对话框并让他使用应用程序 但没有云同步 我无法将
  • iOS 通过溢出滚动禁用页面滚动:触摸

    假设我们希望通过 添加到主屏幕 使网络应用程序感觉像本机应用程序 第一步是禁用默认滚动 容易 对吧 window or document window addEventListener touchmove function event no
  • 如何选择具有多个类的跨度并将其放置在锚点内?

    我所处的情况是 我需要根据应用于它的类将单击事件绑定到跨度 放置在具有多个类的锚点内 For eg 更新 添加了下面的 html 例如 div class c0 c a class c1 c2 span class c3 c4 span A
  • Supervisor 节点 .js“程序节点应用程序已退出,代码为 0”错误

    当我安装快速脚手架应用程序时 express 然后运行npm安装 npm install 然后运行主管 supervisor app I get Starting child process with node app Program no
  • 从数据库模式创建 Web 表单

    我想知道是否有任何应用程序 最好是免费软件 可以进行数据库配置 并且尽可能轻松地创建用于轻松插入数据的 Web 表单 我发现很难准确表达我所追求的是什么 也许我可以谈谈我需要什么 我有一个配置数据库 至少通常包含有关我们系统中服务器的 真相
  • 如何在 jQuery 中解析 JSON 数组?

    EDIT我检查了 jQuery 文档 并使用 ajax 和指定的 json 数据类型返回一个评估的 javascript 对象 因此 eval 不是这里的答案 无论如何 我知道这一点 因为我能够解析单个 JSON 对象 但不能解析数组 问题
  • Capybara 问题:@request 必须是 ActionDispatch::Request

    我在让 Capybara 与 Rails 一起使用时遇到问题 只是测试那个所谓有趣的测试东西 好的 在所附的代码中有几个等效的测试 第一个是用Rails 自带的shoulda context Test Unit 制作的 第二个测试也是使用水
  • bitbucket - 无法确定主机“bitbucket.org”的真实性

    我在尝试推送到我的 bitbucket 存储库时遇到了这个问题 不确定为什么指纹不匹配 It asks me if I want to continue but I can t type anything in the dialog aft
  • 未为类型“DBNull”和类型“Integer”定义运算符“=”

    过去几个小时我一直在挣扎 但仍然无法解决这个问题 我遇到的问题是 当有人被承认数据库更新给他们 BedID 时 当我尝试释放他们时 我似乎无法将 BedID 在数据库中 设置为 Nothing 这是一个问题 因为我需要能够接纳和解雇尽可能多
  • 将 csv 数据集导入到 R 但值变成因子

    我对 R 非常陌生 在访问我导入的数据集时遇到问题 我正在使用 RStudio 并在导入 csv 文件时使用导入数据集功能 并将该行从控制台窗口粘贴到源窗口 代码如下 setwd c kalle R stuckey lt read csv
  • 未调用 DOMContentLoaded 或加载事件处理程序的异步加载脚本?

    我有一个脚本DOMContentLoaded事件处理程序 document addEventListener DOMContentLoaded function console log Hi 我正在异步加载 然而 事件处理程序从未被调用过
  • Java中的正则表达式问题

    我正在尝试为以下内容创建一个正则表达式replaceAllJava 中的方法 测试字符串是abXYabcXYZ模式是abc 我想将除图案之外的任何符号替换为 例如字符串abXYabcXYZ和图案 abc 应该返回 abc 但就我而言 它会返
  • 透明表单,其中包含可见的可点击控件

    我正在尝试在 win8 和 winforms 中制作一个鼠标透明表单 其中包含可单击的控件 我可以使用此代码使表单鼠标透明 int initialStyle GetWindowLong this Handle 20 SetWindowLon
  • 具有彩色高度的 3D 瀑布图

    我正在尝试使用 Python 和 Matplotlib 以 3D 方式可视化一个数据集 该数据集由 x z 数据的时间序列 沿 y 组成 我想创建一个像下面这样的图 这是用 Python 制作的 http austringer net wp
  • 将逗号分隔的字符串作为列表传递

    假设我有一个字符串 例如 x 1 y cat z NULL 我想获取代码创建的列表list x 1 z cat z NULL 这是我的第一次尝试 我知道这是horrible parse text lt function x parse te
  • 如何在 Java 中设置 LookAndFeel 文件?

    我需要在 JDK 1 6 中设置 LookAndFeel 文件 我有两个文件 餐巾拉夫 swingset2 jar 餐巾纸罐子 我该如何设置并使用它 我想要 GTK 外观或 Qt 外观 它们可用吗 本页介绍了如何使用外观和感觉 http j
  • Clang 在折叠表达式中找不到模板二元运算符

    这是我连接元组的二元运算符 template