- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 lambda 转换为 std::function
期间是否复制了捕获的参数?
我需要将捕获不可复制类型的 lambda 转换为 std::function
.
所以我将 lambda 传递给 std::function
作为右值,但发生了错误。
// Foo is non-copyable.
auto a = [f = Foo()]{ };
std::function<void()> b = std::move(a) // error, calls deleted Foo::Foo(const Foo&);
最佳答案
是的, std::function
要求函数对象为 CopyConstructible并且不能与仅移动函数对象一起使用。
Type requirements
F
must meet the requirements of Callable and CopyConstructible.
您可以将 lambda 包装为 std::reference_wrapper
喜欢 std::function<void()> b = std::ref(a);
,但是你必须小心 lambda 对象的生命周期。或者您可以尝试停止使用std::function
并直接使用 lambda;特别是在模板上下文中。
关于c++ - 捕获参数是从右值 lambda 复制的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59494981/
目前我正在使用 [self presentModalViewController :newVC animated:YES] 。我想从左/右/顶部/底部呈现带有推送效果的 newViewcontroll
我正在尝试实现“带有上一个和下一个的部分幻灯片”。这些部分的标记如下: Section 1 Section 2 Section 3 Prev Next 除具有 acti
我的问题与此处提出的问题几乎相同:question 不同的是,我想从右边切换第 2 位和第 4 位数字,而不是像另一个问题中那样从左边切换。所以在我的例子中最右边的数字是 1。示例:283926.67
我是一名优秀的程序员,十分优秀!