Visual Studio 2012 lambda与unique_ptr参数回归
Visual Studio 2012 lambda with unique_ptr argument regression?
我惊讶地发现在Visual Studio 2012 Update 1中以下代码不再编译:
[](unique_ptr<int>){};
编译错误声明无法访问unique_ptr的私有复制构造函数。以上在Visual Studio 2010中工作得很好。
在gcc 4.7.2
中也可以正常编译这是一个已知的错误,还是这实际上是预期的行为?我在microsoftconnect上找不到任何东西。
编辑:我刚刚更新到Visual Studio 2012 Update 2,问题仍然发生。
编辑2:我已经在Microsoft Connect上提交了一个bug报告,如果它也影响到你,欢迎你给它投票。
试试这个:
int a;
[a](unique_ptr<int>){};
不管它是什么,只要明确地捕获一些东西。
我仍然不确定这是否是一个bug,但看起来确实像。
同时,
的逻辑等价 [](unique_ptr<int> aArg)
{
};
可以写成
[](unique_ptr<int> && aArg)
{
unique_ptr<int> arg = std::move(aArg);
};
对于我来说,这不是一个很好的方法,因为我正在编写库代码。lambda的调用者是库,lambda是用户提供的。我不希望强迫用户手动std::move
参数。
所以,虽然这对我来说不实用,但它可能对其他人有用。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 将 ptr 传递给 ptr 到 A 作为参数传递给 A 的函数是不好的做法吗?
- 如何使用非类型参数传递模板化类的 Ref 或 Ptr
- 视觉 C++编译器在计算其参数之前是否允许将函数 ptr 存储在寄存器中?
- 如何调用传递的函数(函数 ptr 作为参数传递给函数)
- 为什么非常量ptr不能隐式地将ptr转换为常量作为模板中的参数
- 二进制泛型lambda不匹配ptr-to-function参数
- 分配const char *ptr数组参数?c++
- 函数PTR转换为带模板参数的函数
- ptr到成员模板参数的友元语法
- 将字符串引用作为参数传递时Ptr错误