Visual Studio 2013 C++ lambda 捕获参数包

2024-01-15

目前 Visual Studio 2013 update 2 不支持完整的 C++11,其中一项功能是捕获 lambda 中的参数包。有没有一种简单的方法可以解决这个问题,或者我是否必须放弃 Visual Studio 并使用兼容的编译器(例如 mingw/g++)?

以下代码演示了我想到的一个简单用例:

template <typename ... Args>
std::thread init_threaded(SomeObject sample, Args && ... args)
{
  auto func = [=]()
  {
    sample->init(args...);
  };

  return std::thread(func);
}

这在最新的 xcode (5.1.1) 和 Linux 下的最新版本的 g++ (使用 4.9.0) 中效果很好,但是在 Visual Studio 2013 update 2 中它给出了错误:

error C2536: 'init_threaded::<lambda_3a984affe0045c597607c0ec0a116b46>::init_threaded::<lambda_3a984affe0045c597607c0ec0a116b46>::<args_0>' : cannot specify explicit initializer for arrays

Edit:这个错误似乎只有当 init 函数中有不同类型时才会发生。以下示例无法编译。

#include <thread>

struct foo
{
    void init(int arg1, std::string arg2) {}
};


template <typename ... Args>
std::thread init_threaded(foo *sample, Args && ... args)
{
    auto func = [=]()
    {
        sample->init(args...);
    };

    return std::thread(func);
}


int main()
{
    foo f;
    auto t = init_threaded(&f, 1, "two");
    t.join();
}

正如评论中所讨论的,这是一个 MSVC 编译器错误,并且有一个解决方法。错误票是here https://connect.microsoft.com/VisualStudio/feedback/details/888992/visual-studio-2013-parameter-packs-and-lambda-capture-bug以防其他人遇到这种情况并想知道状态。

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

Visual Studio 2013 C++ lambda 捕获参数包 的相关文章

  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • CouchDB 中的树

    我是 CouchDB 新手 有一个问题 我正在使用父消息的 ID 作为属性来保存消息 消息还可以有一个 childMessage 作为父级 因此它看起来像一棵树 我如何查询所有孩子 包括孩子的孩子 谢谢 这是处理分层数据时常用的方法 htt
  • Rails 如何优化我的网站?

    我想让我的网站更快 我知道我可以制作 CSS 精灵并压缩 HTML 和 CSS 还有其他方法可以优化页面速度吗 此页面就是一个示例 http www vinderhimlen dk konkurrencer vind elektronik
  • 如何防止 BeautifulSoup4 在汤中添加额外的 标签? [复制]

    这个问题在这里已经有答案了 在 BeautifulSoup 3 之前的版本中 我可以获取任何 HTML 块并通过以下方式获取字符串表示形式 from BeautifulSoup import BeautifulSoup soup3 Beau
  • 使用 PHP 确定本地文件的 Mime 类型(内容类型)

    我正在尝试确定文件的 mime 类型 我尝试了几种方法 但没有想出任何可以提供一致输出的方法 我试过了 mime mime content type file and mime exec file bi file 我正在提供图像 CSS 和
  • 如何在Qt5中播放声音(Qt4迁移)?

    在Qt4中我曾经使用过 QT multimedia phonon include
  • 安全性:我应该如何存储(“记住”)用户的用户名和密码以供将来使用?

    我需要我的应用程序能够记住用户的用户名和密码 以便用户将来不必再次输入 显然 为了 记住 用户名和密码以供将来使用 这意味着我的应用程序必须以某种方式将用户名和密码存储到磁盘 这通常是如何完成的 我知道 Pidgin 以纯文本形式存储用户名
  • 高阶函数有哪些有趣的用途?

    我目前正在学习函数式编程课程 我对高阶函数和一等公民函数的概念感到很有趣 然而 我还想不出许多实际有用的 概念上令人惊奇的或只是简单有趣的高阶函数 除了典型的 相当沉闷的map filter等功能 您知道此类有趣函数的示例吗 也许是返回函数
  • 图像和 div 的最大可能尺寸扩展以填充空间

    我确信以前有人问过这个问题 但我找不到确切问题的答案 我想要一个非常简单的布局 header content graphic where 页眉高度由字体大小设置 内容有固定的最小宽度 考虑到这两个限制并保持纵横比 图形尽可能大 即 它将与屏
  • jqGrid 子网格的 JSON 对象

    这是我关于 jqGrid 子网格的 JSON 数据的第三个问题 到目前为止我还没有得到任何评论 请有人帮忙 my 第一个问题 https stackoverflow com questions 6647302 subgrid in jqgr
  • GetHashCode() 经常重写碰撞方式

    我正在使用 Unity 而 Unity 中没有元组 因此我创建了自己的元组类来工作 因为我的字典需要它 Dictionary
  • 从特定链接读取流

    我需要使用 OpenCV 库从 mjpeg 读取流 更详细的信息 我需要阅读http 194 126 108 66 8887 但是当我尝试这样做时 VideoCapture ipCam ipCam open http 194 126 108
  • 是否可以对网页中的 iframe 进行截图?

    我正在尝试截取网页中 iframe 的屏幕截图 在我的特定情况下 iframe 包含我的一位客户商店的街景视图 据我搜索和阅读 我没有找到任何解决方案 我知道有像这样的 JavaScript 库Html2Canvas and Canvas2
  • 如何将数据库从一台 MongoDB 服务器复制到另一台服务器?

    我在不同的服务器上有两个 mongodb 都以 auth 现在我想将数据库从一台服务器复制到另一台服务器 gt mongo gt use admin gt db copyDatabase mydb mydb another server 表
  • Python中Matlab的datenum(datestring)的等价函数

    在 Matlab 中 当我运行 datenum http de mathworks com help matlab ref datenum html 功能如下 datenum 1970 1 1 我得到以下输出 719529 我试图找到等效的
  • 如何升级 Windows 10 中的 Python 安装?

    我的一个 LAB 工作站上安装了 Python 2 7 11 我想将 Python 至少升级到 3 5 我该怎么做呢 我是否应该完全卸载 2 7 11 而不是安装新版本 有办法更新吗 更新是个好主意吗 Python 的每个次要版本 即任何
  • 如何重置 COMP_WORDBREAKS 而不影响其他完成脚本?

    当我实现 bash 自动完成功能时 有些事情让我感到困惑 我将把它放入 etc bash completion d 为了实现某些功能 我想删除分词字符冒号 来自变量 COMP WORDBREAKS并添加斜杠 开始于 COMP WORDBRE
  • 如何使用 iGraph 在 R 中挖掘主题

    我正在尝试使用该包在 R 中挖掘 3 节点图案igraph 我想检索图中每个单独顶点的图案数量 这在 graph motifs 函数中似乎不可能 因此 对于示例图 testGraph barabasi game 10 m 5 power 2
  • 将 TFS 项目转换为 git 存储库的最佳方法是什么

    我知道 VS2012 中对 git 的支持已经有了很多进展 我们目前有一个 Team Foundation Server 2012 更新 2 其中我们的所有项目都以经典 TFS 格式存储 我们希望从 TFS 迁移到纯 git repo 系统
  • 添加内存地址错误

    这无法在 VSC 2008 中编译 void toSendMemory2 toSendMemory 4 我不知道为什么 尽管我确信我这样做很愚蠢 P 当你添加N to a T 指针将增加sizeof T N bytes sizeof voi
  • Visual Studio 2013 C++ lambda 捕获参数包

    目前 Visual Studio 2013 update 2 不支持完整的 C 11 其中一项功能是捕获 lambda 中的参数包 有没有一种简单的方法可以解决这个问题 或者我是否必须放弃 Visual Studio 并使用兼容的编译器 例