函数局部 typedef 在 C++0x lambda 中是否可见?

2023-11-24

我遇到了一个奇怪的问题。以下简化代码重现了 MSVC 2010 中的问题:

template <typename T>
struct dummy
{
    static T foo(void) { return T(); }
};

int main(void)
{
    typedef dummy<bool> dummy_type;
    auto x = []{ bool b = dummy_type::foo(); };
    // auto x = []{ bool b = dummy<bool>::foo(); }; // works
}

The typedef我在函数中本地创建的似乎在 lambda 中不可见。如果我更换typedef使用实际类型,它会按预期工作。

以下是一些其他测试用例:

// crashes the compiler, credit to Tarydon
int main(void)
{
    struct dummy {};

    auto x = []{ dummy d; };
}

// works as expected
int main(void)
{
    typedef int integer;

    auto x = []{ integer i = 0; };
}

我现在没有可用的 g++ 来测试它。这是 C++0x 中的一些奇怪规则,还是只是编译器中的一个错误?

从上面的结果来看,我倾向于错误。尽管崩溃肯定是一个错误。


目前我已经提交了两份错误报告.

上面的所有代码片段都应该可以编译。该错误与在本地定义的范围上使用范围解析有关。 (发现者dvide.)

崩溃错误与……谁知道呢。 :)


Update

根据错误报告,它们都已在 Visual Studio 2010 的下一版本中得到修复。(尽管情况似乎并非如此;也许是 VS11。)


从n3000,5.1.2/6,

lambda 表达式的 复合语句产生 函数的函数体 (8.4) 呼叫接线员,但出于以下目的 名称查找(3.4),... 复合语句被认为是 lambda 表达式的上下文。

毫不奇怪,本地类型应该是可见的。

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

函数局部 typedef 在 C++0x lambda 中是否可见? 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • java.lang.ClassNotFoundException:org.apache.poi.xssf.usermodel.XSSFWorkbook

    当我尝试在普通 java 类中创建工作簿时 它正在创建 但是当我尝试在 servlet 上运行相同的工作簿时 它会抛出异常 普通java类 import java io File import java io FileInputStream
  • 如何使用 matplotlib 中的分类数据创建饼图?

    我有数据如下 ID Gender Country 1 Male UK 2 Female US 3 Male NZ 4 Female UK 性别只有 2 个选项 国家只有 3 个选项 我想为 性别 和 国家 创建一个单独的饼图 以显示每个选项
  • MVC 在视图模型中使用域模型

    以下操作可以吗 我知道域模型永远不应该在视图中使用 但是可以在视图模型中使用域模型吗 对于一些非常小的模型 为它们创建和管理视图模型似乎并不值得 例如 public class LoginDomainModel public string
  • 如何获取 WooCommerce 中所有订单状态的别名和名称?

    我想获取所有 WooCommerce 订单状态的所有 slugs 和名称 我尝试了以下线程中的答案 Woocommerce 获取订单状态列表列表但没有成功 我使用最新的 woocommerce 版本 任何帮助表示赞赏 您将使用专用功能wc
  • 了解 aurioTouch2 中的 FFT

    我一直在研究 Apple 示例代码中的 aurioTouch 2 在这里找到 归根结底 我想自己分析频率 现在我正在尝试了解这里发生的一些事情 如果这是微不足道的 我很抱歉 只是想了解一些源代码中漂浮的一些未注释的神奇数字 我现在的主要困惑
  • C++ 中的内存分配区域(堆栈、堆、静态)

    我知道 C 中有三个而不是两个内存区域 堆栈 堆和静态分配功能的区域 我有两个问题 为什么堆比栈慢这么多 当然 它应该只是一个额外的间接层 为静态 功能 变量 函数 类 分配的内存区域是否比堆提供更快的性能 首先是一些旁注 正确的术语是自动
  • HTML5 音频流

    之前在 stackoverflow 上已经有过一些关于这个问题的讨论 但从我所看到的来看 没有任何东西能真正回答这个问题 我正在尝试实现一个流音频网络应用程序 与 WFMU 对他们的球员所做的几乎相同 http wfmu org html5
  • 如何使用 Three.js 获取鼠标位置?

    嗨 我正在使用Icosahedrongemetry 在那儿 我将每个顶点添加圆地测定法 因此 现在我的要求是 当鼠标向圆向圆移动时 圆应感知鼠标 并且应该向鼠标移动 因此 我在圆圈周围创建了一个铃声 因此 如果鼠标向环移动 则圆圈应感知鼠标
  • MVC 中的 P3P 标头信息

    我不确定应该将其放在我的 Asp net MVC 网站中的什么位置 HttpContext Current Response AppendHeader P3P CP IDC DSP COR ADM DEVi TAIi PSA PSD IVA
  • 承诺并订阅

    我有一个 Angular2 ionic2 应用程序 我有一个请求城市的函数 但收到一个错误 指出属性订阅不存在this cityService getAllCities cityPage ts 有一个这样的函数 getCities this
  • Python - PySpark 的 Pickle Spacy

    The Spacy 2 0 文档提到开发人员添加了允许对 Spacy 进行 pickle 的功能 以便它可以由 PySpark 接口的 Spark 集群使用 但是 他们没有给出如何执行此操作的说明 有人可以解释一下我如何pickle Spa
  • TabLayout中的Fragment仅在用户滑动Android时加载

    你好 我正在用 A 制作一个应用程序fragment和几个孩子fragment在里面使用tablayout and viewpager 问题全是我的孩子fragment from Tablayout 始终执行 每当用户单击父级时加载所有代码
  • if-let 还是普通 if 条件更好?

    例如 fn foo gt Option lt gt fn bar gt Option lt gt if let None foo lt here return None 然后我将 if 语句更改为 if None foo 而且它也有效 可以
  • 从 python 脚本启动节点应用程序

    是否可以从树莓派上的Python脚本中启动node js应用程序 在命令行上我运行sudo node myscript js 我可以使用像操作系统这样的库吗 文件的第一行应为 usr bin python 您可以使用以下命令调用命令子流程调
  • H2 SQL语法异常

    我正在尝试导入 H2 的 sql 脚本 该脚本由 spring batch 提供 用于存储作业元数据 当我直接在 H2 控制台中执行此脚本时 没有语法错误 但我在初始化阶段引用了 Hibernate JPA 中要导入的相同脚本 但出现了以下
  • 使用 Docker 和 Docker Compose 时,Cypress 无法验证该服务器是否正在运行

    我目前正在运行三个 docker 容器 用于前端 Web 应用程序的 Docker 容器 在端口 8080 上公开 后端服务器的 Docker 容器 在端口 5000 上公开 我的 MongoDB 数据库的 Docker 容器 所有三个容器
  • 当启用急切执行时,传递给 Optimizer.compute_gradients 的“loss”应该是一个函数

    我是 TensorFlow 的新手 刚刚开始学习和理解它 我正在研究neural style transfer问题 我正在使用张量流version 1 14 我收到错误当启用急切执行时 传递给 Optimizer compute gradi
  • AVMutableCompositionTrack - insertTimeRange - insertEmptyTimeRange 问题

    我有一个奇怪的问题 我想用两个声音文件和静音生成一个新的声音文件 声音1 2秒长 静音 2秒静音 声音2 2秒长 当我尝试下面的代码时 我得到了一个 6 秒长的声音文件 其中包含所有部分 但顺序不同 顺序是 声音1 声音2 静音 我无法将这
  • 动态创建并提交表单

    有办法进去吗jQuery即时创建并提交表单 像下面这样 Content Are
  • 函数局部 typedef 在 C++0x lambda 中是否可见?

    我遇到了一个奇怪的问题 以下简化代码重现了 MSVC 2010 中的问题 template