下标迭代器内的 lambda

2024-04-13

在下标运算符中使用 lambda 似乎不适用于 g++ 和 clang。

这是 C++ 标准中的实现错误还是“不愉快”的规则?

Example:

class A
{   
    public:
        template<typename T> void operator[](T) {}
        template<typename T> void operator()(T) {}
};  

int main()
{   
    A a;
    a[ [](){} ];    // did not compiler: see error message
    a( [](){} );    // works as expected
} 

Error:

main.cpp:13:6: error: two consecutive '[' shall only introduce an attribute before '[' token
     a[ [](){} ];
      ^   
main.cpp:13:15: error: expected primary-expression before ']' token
     a[ [](){} ];

我知道属性以“[[”开头,但我想知道“[ [”(带有一个或多个空格)也可以这样工作:

 void func( int x [ [gnu::unused] ] ) {} // compiles fine! :-(

您必须将 lambda 括在括号中。否则编译器会考虑两个[[作为引入一个属性。

使用运算符删除也会出现类似的问题。例如你必须写

delete ( [] { return ( new int() ); }() );

or

delete [] ( [] { return ( new int[10] ); }() );

也就是说,您必须将 lambda 括在括号中。

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

下标迭代器内的 lambda 的相关文章

  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li

随机推荐

  • Excel-VBA。移动公式而不复制它们

    我从我的宏中获取了以下代码 该代码运行良好 Cells curRow M Copy Range N curRow R curRow PasteSpecial Paste xlPasteFormulas 我想问一下有没有办法可以移动公式而不需
  • 两种方式将 wpf datagrid 绑定到数据库

    HI all 我想以两种方式绑定 WPF 数据网格 我尝试过以下 XAML
  • 为什么 UITextField.text 是可选的?

    它开始时是一个空字符串而不是 nil 即使它被显式设置为 nil 它仍然是一个空字符串 我不明白 也许是为了通过分配 nil 来轻松清除 用它编写代码很笨拙 var textField UITextField print textField
  • HTML5 画布元素上的子像素抗锯齿文本

    我对画布元素抗锯齿文本的方式有点困惑 希望你们都能提供帮助 在下面的屏幕截图中 顶部的 Quick Brown Fox 是一个 H1 元素 底部的元素是一个画布元素 上面渲染有文本 在底部 您可以看到两个 F 并排放置并放大 请注意 H1
  • 在 Android 中下载并解压 Zip 文件 [重复]

    这个问题在这里已经有答案了 我的应用程序正在从服务器下载 zip 文件并解压该 zip 文件并将文件保存到 SD 卡中 但问题是如果我下载 4 5 MB 的 zip 文件并解压它 这工作正常 但如果我下载 30 35 MB zip 文件这会
  • 在 C# 中重命名文件

    如何使用 C 重命名文件 看一眼系统 IO 文件 移动 http msdn microsoft com en us library system io file move aspx 将文件 移动 到新名称 System IO File Mo
  • Helm 中的 PostgreSQL:initdbScripts 参数

    PostgreSQL 的默认 Helm Chart 即stable postgresql 定义了一个initdbScripts允许运行初始化脚本的参数 但是 我似乎无法获得正确的格式来了解如何通过命令行发出它 有人可以提供如何填充此命令行参
  • Haskell 列表的嵌套笛卡尔积

    我想创建一种方法 可以给它一个长度列表 它会返回达到这些长度的笛卡尔坐标的所有组合 用一个例子更容易解释 cart 2 5 Prelude gt 0 0 0 1 0 2 0 3 0 4 1 0 1 1 1 2 1 3 1 4 cart 2
  • 如何使用 JCalendar 选择数组中的元素?

    我有一个 3D 数组 其中包含 38 年 12 个月和每个月 31 个条目 无论该月有多少天 就像这样 array 38 12 31 我还有一个 JCalendar 现在除了看起来很漂亮之外什么也不做 并且 JCalendar 下面有一个按
  • 关于人脸验证(相对于人脸识别)的置信度分数有什么建议吗?

    我在代码中使用特征脸 PCA 进行人脸识别 我使用了OpenCV网站上的教程作为参考 虽然这对于识别人脸非常有用 即它可以正确地告诉您谁是谁 但基于置信度分数的人脸验证 或冒名顶替者检测 验证人脸是否已注册在训练集中 根本不起作用 我计算欧
  • 查找两个数组之间的共同值

    如果我想比较两个数组并创建一个插值输出字符串 如果数组中的数组变量 y存在于x如何获得每个匹配元素的输出 这就是我正在尝试的 但没有完全得到结果 x 1 2 4 y 5 2 4 x each do num puts The number n
  • 将 0xFF 写入文件时出现问题

    我正在尝试使用 PrintStream 将 0xFF 写入 java 文件 当我使用十六进制编辑器打开文件时 其他值会正确写入文件 但应该显示 0xFF 的值却显示为 0xC3BF 使用的变量类型是int 经过几次尝试后 我还发现我可以输入
  • List>Remove() 方法

    我想在列表列表上使用 Remove 方法 但它对我不起作用 简单的例子应该说明一切 List
  • Laravel 多个 WHERE 子句

    我需要向 Laravel SQL 查询添加多个 where 子句 到目前为止我的 PHP 代码是 date default timezone set America Los Angeles today getdate year today
  • Magento 购物车未更新阿拉伯语商店视图中的数量

    我在 Magento 1 8 1 安装中遇到以下问题 我有两种商店视图 英语 默认 和阿拉伯语 在英文商店视图中 如果我将产品添加到购物车 我可以通过在数量框中输入新数量并单击更新购物车来修改数量 这会更改数量和总数 但是 当我切换到阿拉伯
  • @font-face 在 Firefox 中不配合

    我尝试了很多事情 包括单击与我的问题相关的所有问题 有很多 并尝试了他们所有的 解决方案 但没有一个对我有用 我尝试将 eot 文件包装在条件 IE 语句中 但这也不起作用 有人说如果你不在自己的服务器上托管文件 font face 将无法
  • 尽管被捕获,生成器内部抛出的错误还是完成了它

    我有一个异步生成器函数 它内部调用几个可能引发错误的异步函数 我想要的是 当错误发生时 生成器只是记录它 然后继续进一步工作 所以我有这样的代码 async getAll somestuff try const thing await fe
  • 通过 Git 推送大文件的问题

    目前 当我尝试推送到 Git 存储库时 出现以下错误 remote error GH001 Large files detected remote error Trace 7bbfe5c1099cfe679aa3cd1eee13e10a r
  • 汇编语言中数组的冒泡排序

    我需要对一个无组织的数组进行冒泡排序 其中包含从最大到最小的 7 个整数 因此它看起来像 9 6 5 4 3 2 1 我通过编译器运行我的代码 它说 我不明白这段代码有什么问题 code segment assume ds code cs
  • 下标迭代器内的 lambda

    在下标运算符中使用 lambda 似乎不适用于 g 和 clang 这是 C 标准中的实现错误还是 不愉快 的规则 Example class A public template