为什么不推荐使用std :: function :: argument_type?

文森特

我已经看到了cppreferencestd::function::argument_type在C ++ 17弃用。背后的原因是什么?ISO WG21论文提出了什么?

cpplearner

相关论文为P0005R4(已被选入标准草案的论文)和P0090R0(已由P0005R4引用)。

引用P0090R0:

Q2。result_type等有什么问题?

A2。这些C ++ 98/03 / TR1-era typedef早于decltype和完善的转发。以前,通用代码必须先适应功能对象,然后才能对其进行适应。现在,无需手动传达该信息。decltype取代了result_type,因为编译器可以简单地报告使用特定参数调用函数对象的结果。完美的转发取代了arguments_type系列,因为适配器可以简单地接受/存储/转发任意参数。

实际上,这些typedef比没有用的要糟。它们起反作用,因为许多可调用对象缺少它们。函数指针和成员指针始终缺少它们。最近删除了ptr_fun(),它使用这些typedef封装了函数指针(再次参见[1])。最重要的是,lambda始终缺少这些typedef,它们是所有类型中最重要的功能对象。通用lambda更不兼容。

这意味着,如果用户尝试使用typedef的result_type系列编写通用代码,则他们的代码将不是通用的-它将无法处理lambda,通用lambda,函数指针等。

应该删除这些typedef,因为它们已经对现代代码产生了积极的危害。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: function vsalias函数指针,为什么不编译

来自分类Dev

为什么std :: function没有function_type或等效成员类型?

来自分类Dev

TypeError: argument of type 'function' is not iterable

来自分类Dev

为什么可以将std :: bind分配给参数不匹配的std :: function?

来自分类Dev

为什么不推荐使用<nobr>?

来自分类Dev

为什么不推荐使用Cloneable?

来自分类Dev

为什么不推荐使用DefaultAnnotationHandlerMapping?

来自分类Dev

为什么不推荐使用SET?

来自分类Dev

为什么不推荐使用代理?

来自分类Dev

为什么不推荐使用Jquery DataTable?

来自分类Dev

为什么推导出F时std :: is_function <F>返回false_type?

来自分类Dev

为什么在`std :: is_member_function_pointer`中使用&符号?

来自分类Dev

为什么在`std :: is_member_function_pointer`中使用&符号?

来自分类Dev

为什么在C ++ 14中不推荐使用std :: shuffle方法?

来自分类Dev

为什么std :: unary_function不包含虚拟析构函数

来自分类Dev

Capture function argument type from actual arguments

来自分类Dev

为什么不推荐使用ProviderSignInUtils.getConnection

来自分类Dev

为什么Scala中不推荐使用。+()方法?

来自分类Dev

Android:为什么不推荐使用SoundPool的构造函数?

来自分类Dev

为什么不推荐使用WeakMap clear()方法?

来自分类Dev

为什么在Akka 2.3中不推荐使用Transactor

来自分类Dev

为什么不推荐使用常量HTTP.UTF_8?

来自分类Dev

为什么不推荐使用专用访问器?

来自分类Dev

在OS X 10.9中不推荐使用'gluErrorString'。为什么?

来自分类Dev

为什么不推荐使用从xml生成的类?

来自分类Dev

为什么不推荐使用@ EnableOAuth2Sso?

来自分类Dev

为什么在Akka 2.3中不推荐使用Transactor

来自分类Dev

为什么Scala中不推荐使用。+()方法?

来自分类Dev

为什么不推荐使用xargs -i选项?

Related 相关文章

  1. 1

    std :: function vsalias函数指针,为什么不编译

  2. 2

    为什么std :: function没有function_type或等效成员类型?

  3. 3

    TypeError: argument of type 'function' is not iterable

  4. 4

    为什么可以将std :: bind分配给参数不匹配的std :: function?

  5. 5

    为什么不推荐使用<nobr>?

  6. 6

    为什么不推荐使用Cloneable?

  7. 7

    为什么不推荐使用DefaultAnnotationHandlerMapping?

  8. 8

    为什么不推荐使用SET?

  9. 9

    为什么不推荐使用代理?

  10. 10

    为什么不推荐使用Jquery DataTable?

  11. 11

    为什么推导出F时std :: is_function <F>返回false_type?

  12. 12

    为什么在`std :: is_member_function_pointer`中使用&符号?

  13. 13

    为什么在`std :: is_member_function_pointer`中使用&符号?

  14. 14

    为什么在C ++ 14中不推荐使用std :: shuffle方法?

  15. 15

    为什么std :: unary_function不包含虚拟析构函数

  16. 16

    Capture function argument type from actual arguments

  17. 17

    为什么不推荐使用ProviderSignInUtils.getConnection

  18. 18

    为什么Scala中不推荐使用。+()方法?

  19. 19

    Android:为什么不推荐使用SoundPool的构造函数?

  20. 20

    为什么不推荐使用WeakMap clear()方法?

  21. 21

    为什么在Akka 2.3中不推荐使用Transactor

  22. 22

    为什么不推荐使用常量HTTP.UTF_8?

  23. 23

    为什么不推荐使用专用访问器?

  24. 24

    在OS X 10.9中不推荐使用'gluErrorString'。为什么?

  25. 25

    为什么不推荐使用从xml生成的类?

  26. 26

    为什么不推荐使用@ EnableOAuth2Sso?

  27. 27

    为什么在Akka 2.3中不推荐使用Transactor

  28. 28

    为什么Scala中不推荐使用。+()方法?

  29. 29

    为什么不推荐使用xargs -i选项?

热门标签

归档