我可以在lambda捕获子句中声明变量吗?

什么时候

我想提交一个句柄,但是我只希望在共享指针仍然有效的情况下执行该句柄:

// elsewhere in the class:
std::shared_ptr<int> node;

// later on:
const std::weak_ptr<int> slave(node); // can I do this in the capture clause somehow?
const auto hook = [=]()
{
  if (!slave.expired())
    //do something
  else
    // do nothing; the class has been destroyed!
};

someService.Submit(hook); // this will be called later, and we don't know whether the class will still be alive

我可以slave在lambda的capture子句中声明吗?const auto hook = [std::weak_ptr<int> slave = node,=]()....但不幸的是,这不起作用。我想避免声明变量然后复制它(不是出于性能原因;我只是认为,如果我可以创建lambda所需的任何内容而又不会污染封闭范围,那将变得更加清晰和整洁)。

克里斯

您可以使用C ++ 14中的广义lambda捕获来执行此操作:

const auto hook = [=, slave = std::weak_ptr<int>(node)]()
{
    ...
};

这是一个生动的例子注意,由于没有参数或显式的返回类型,()因此可以省略空的参数列表()。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在语句中声明变量吗?

来自分类Dev

我可以在OVER子句中使用变量而不是整数吗?

来自分类Dev

可以在WHERE子句中使用MySQL临时变量吗?

来自分类Dev

我可以在Where子句中使用“虚拟列”吗?

来自分类Dev

我可以在查询中声明变量吗?

来自分类Dev

我可以在查询中声明变量吗?

来自分类Dev

SQL Server:在FROM子句中声明变量

来自分类Dev

C ++ lambda构造函数参数可以捕获构造的变量吗?

来自分类Dev

我是否可以在子句中使用LIKE运算符之前声明通配符?

来自分类Dev

我可以在switch语句中使用变量吗?

来自分类Dev

我可以在With语句中引用目标变量吗?

来自分类Dev

我可以在 if else 语句中命名变量吗?Python

来自分类Dev

索引可以在NOT IN或<>子句中工作吗?

来自分类Dev

使用模仿 是否可以模拟将lambda作为参数并声明由lambda捕获的变量的方法?

来自分类Dev

Google表格WHERE子句中的列号可以是变量吗?

来自分类Dev

使用数据透视运算符时可以在IN子句中传递变量吗

来自分类Dev

在ColdFusion中,我可以按值捕获封闭变量吗?

来自分类Dev

我可以在函数声明中传递变量吗?

来自分类Dev

我可以预先声明变量以破坏对象分配吗?

来自分类Dev

汇编-我可以在过程中声明变量吗?

来自分类Dev

我可以在Java中更改变量的声明类型吗?

来自分类Dev

我可以声明局部变量不为null吗?

来自分类Dev

我可以用方括号声明变量吗?

来自分类Dev

我可以在AGENT-CAPABILITIES的INCLUDES子句中加入MODULE-COMPLIANCE吗?

来自分类Dev

我们可以在SQL Server 2008的ELSE IF语句中写IN子句吗

来自分类Dev

我们可以在Select查询的From子句中执行动态SQL吗?

来自分类Dev

我可以在WHERE子句中使用COUNT()函数吗?查询总统

来自分类Dev

我可以在Where子句中使用Firebird DateAdd函数吗?

来自分类Dev

我可以与where子句中定义的函数进行模式匹配吗?

Related 相关文章

  1. 1

    我可以在语句中声明变量吗?

  2. 2

    我可以在OVER子句中使用变量而不是整数吗?

  3. 3

    可以在WHERE子句中使用MySQL临时变量吗?

  4. 4

    我可以在Where子句中使用“虚拟列”吗?

  5. 5

    我可以在查询中声明变量吗?

  6. 6

    我可以在查询中声明变量吗?

  7. 7

    SQL Server:在FROM子句中声明变量

  8. 8

    C ++ lambda构造函数参数可以捕获构造的变量吗?

  9. 9

    我是否可以在子句中使用LIKE运算符之前声明通配符?

  10. 10

    我可以在switch语句中使用变量吗?

  11. 11

    我可以在With语句中引用目标变量吗?

  12. 12

    我可以在 if else 语句中命名变量吗?Python

  13. 13

    索引可以在NOT IN或<>子句中工作吗?

  14. 14

    使用模仿 是否可以模拟将lambda作为参数并声明由lambda捕获的变量的方法?

  15. 15

    Google表格WHERE子句中的列号可以是变量吗?

  16. 16

    使用数据透视运算符时可以在IN子句中传递变量吗

  17. 17

    在ColdFusion中,我可以按值捕获封闭变量吗?

  18. 18

    我可以在函数声明中传递变量吗?

  19. 19

    我可以预先声明变量以破坏对象分配吗?

  20. 20

    汇编-我可以在过程中声明变量吗?

  21. 21

    我可以在Java中更改变量的声明类型吗?

  22. 22

    我可以声明局部变量不为null吗?

  23. 23

    我可以用方括号声明变量吗?

  24. 24

    我可以在AGENT-CAPABILITIES的INCLUDES子句中加入MODULE-COMPLIANCE吗?

  25. 25

    我们可以在SQL Server 2008的ELSE IF语句中写IN子句吗

  26. 26

    我们可以在Select查询的From子句中执行动态SQL吗?

  27. 27

    我可以在WHERE子句中使用COUNT()函数吗?查询总统

  28. 28

    我可以在Where子句中使用Firebird DateAdd函数吗?

  29. 29

    我可以与where子句中定义的函数进行模式匹配吗?

热门标签

归档