空指针可以指向lambda函数吗?

下坡从这里

将函数指针分配给void指针,

double f_dummy(double x) { return x; }
...
    void *pv = f_dummy;  //compilation error

如本FAQ所述是非法的但是,答案以以下语句结束:

如果以上内容似乎适用于特定操作系统上的特定编译器的特定版本,请不要给我发送电子邮件。我不在乎 这是非法的。

编辑:作为对他人的警告,通过涉及类模板的继承案例,我确实遇到了这种“似乎可行”的行为。没有编译器警告,没有意外的运行时行为。

这使我的OCD骨骼发痒,让我想知道我在做什么,例如,

...
    auto l_func = [](double x){ return f_dummy(x); };
    void *pv = &l_func;
    auto pl = static_cast<decltype(&l_func)>(pv);
    cout << (*pl)(5.) << endl; 

g++ -std=c++11 -Wall完全合法编译和运行()是合法的。是吗?

轨道轻赛

是的,这是合法的,因为:

  • 指向对象的指针可能会void*再次投射或返回;
  • l_func 是一个对象(仿函数,具有未指定的类类型)–通过标准命令实现lambda的方式。

您引用的FAQ文本是无关的,因为它指向函数的指针_yourUnspecifiedLambdaType::operator()是等效的*函数,但您在此不做任何事情。

*嗯,它甚至不是等效的,因为它是成员函数!

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取指向lambda的函数指针?

来自分类Dev

我可以使用指向静态函数的函数指针,例如指向非静态函数的函数指针吗?

来自分类Dev

您可以从C中当前指向的函数中更改指向函数的指针吗?

来自分类Dev

指向lambda函数的函数指针的相等性

来自分类Dev

C++ 可以将空指针传递给函数吗?

来自分类Dev

使用C ++ Lambda指向成员函数的指针

来自分类Dev

枚举指针可以指向常量值吗?

来自分类Dev

我可以使用指向其析构函数中被破坏对象的指针吗?

来自分类Dev

我们可以返回非指向指针函数的值吗

来自分类Dev

我可以定义指向std :: function类型对象的函数指针吗?

来自分类Dev

您可以使用取消引用来调用指向汇编中函数的指针吗?

来自分类Dev

我可以在该对象的构造函数中创建一个指向该对象的指针吗?

来自分类Dev

我们可以编写一个函数来返回指向函数模板的函数指针吗?

来自分类Dev

您可以将“函数指针指向指针”转换为void *

来自分类Dev

在纯 C 中,我们可以使用指向 char 的指针而不是指向 void 的指针来实现泛型函数吗?

来自分类Dev

lambda函数可以递归吗?

来自分类Dev

我可以在导出到c的c ++函数中使用`bool`类型或不透明的指针指向类吗?

来自分类Dev

C ++如何获取指向lambda函数的void指针?

来自分类Dev

如何拥有指向通用lambda的函数指针?

来自分类Dev

指向类对象的空指针:函数内部的初始化

来自分类Dev

将指向lambda函数的指针分配给指向另一个lambda函数的指针

来自分类Dev

有人可以解释指向我的指针吗

来自分类Dev

指向const结构的指针,仍然可以修改成员吗?

来自分类Dev

std :: function可以存储指向数据成员的指针吗?

来自分类Dev

指向非工会类的指针的大小可以不同吗?

来自分类Dev

我可以使用指向类的指针吗?

来自分类Dev

可以设置指向 POST 和 GET 的 PHP 指针吗?

来自分类Dev

指向成员函数的指针不是可调用对象吗

来自分类Dev

向下指向成员函数的指针。这是合法用法吗?

Related 相关文章

  1. 1

    获取指向lambda的函数指针?

  2. 2

    我可以使用指向静态函数的函数指针,例如指向非静态函数的函数指针吗?

  3. 3

    您可以从C中当前指向的函数中更改指向函数的指针吗?

  4. 4

    指向lambda函数的函数指针的相等性

  5. 5

    C++ 可以将空指针传递给函数吗?

  6. 6

    使用C ++ Lambda指向成员函数的指针

  7. 7

    枚举指针可以指向常量值吗?

  8. 8

    我可以使用指向其析构函数中被破坏对象的指针吗?

  9. 9

    我们可以返回非指向指针函数的值吗

  10. 10

    我可以定义指向std :: function类型对象的函数指针吗?

  11. 11

    您可以使用取消引用来调用指向汇编中函数的指针吗?

  12. 12

    我可以在该对象的构造函数中创建一个指向该对象的指针吗?

  13. 13

    我们可以编写一个函数来返回指向函数模板的函数指针吗?

  14. 14

    您可以将“函数指针指向指针”转换为void *

  15. 15

    在纯 C 中,我们可以使用指向 char 的指针而不是指向 void 的指针来实现泛型函数吗?

  16. 16

    lambda函数可以递归吗?

  17. 17

    我可以在导出到c的c ++函数中使用`bool`类型或不透明的指针指向类吗?

  18. 18

    C ++如何获取指向lambda函数的void指针?

  19. 19

    如何拥有指向通用lambda的函数指针?

  20. 20

    指向类对象的空指针:函数内部的初始化

  21. 21

    将指向lambda函数的指针分配给指向另一个lambda函数的指针

  22. 22

    有人可以解释指向我的指针吗

  23. 23

    指向const结构的指针,仍然可以修改成员吗?

  24. 24

    std :: function可以存储指向数据成员的指针吗?

  25. 25

    指向非工会类的指针的大小可以不同吗?

  26. 26

    我可以使用指向类的指针吗?

  27. 27

    可以设置指向 POST 和 GET 的 PHP 指针吗?

  28. 28

    指向成员函数的指针不是可调用对象吗

  29. 29

    向下指向成员函数的指针。这是合法用法吗?

热门标签

归档