当前位置: 首页 > wzjs >正文

宁波seo教程南通seo网站建设费用

宁波seo教程,南通seo网站建设费用,锡林浩特网站建设,一对一视频网站开发一、std::copyable_function std::function在被引入C标准后,大家用起来还是相当方便的,虽然对于函数指针,std::function确实是有点重量。但实际上,对于大多数的开发者,其实对这个重量不重量并不敏感。不过,…

一、std::copyable_function

std::function在被引入C++标准后,大家用起来还是相当方便的,虽然对于函数指针,std::function确实是有点重量。但实际上,对于大多数的开发者,其实对这个重量不重量并不敏感。不过,它确实还是有一些细节上的问题的。这不,C++26就提出了std::copyable_function,不过大家一定要注意,std::copyable_function并不是替代std::function,而是对其的细节的完善和补充。其定义如下:

copyable_function() noexcept;
copyable_function( std::nullptr_t ) noexcept;
copyable_function( const copyable_function& other );
copyable_function( copyable_function&& other ) noexcept;
template< class F >
copyable_function( F&& f );
template< class T, class... CArgs >
explicit copyable_function( std::in_place_type_t<T>, CArgs&&... args );
template< class T, class U, class... CArgs >
explicit copyable_function( std::in_place_type_t<T>,std::initializer_list<U> il, CArgs&&... args );

二、与std::function区别及应用

那么std::copyable_function和std::function到底有什么不同呢?
1、std::copyable_function支持显示的指定cv限定符、引用限定符以及noexcept规范。
这是什么意思呢,其实就是让函数的匹配更精确,更容易达到设计者的目的,从而避免一些因某些细小的问题导致的函数的调用错误。std::function并未提供异常处理并且存在常量处理的缺陷。
2、std::copyable_function引入了严格的非空处理
如果确实出现了空值的情况,会出现UB行为(这个不好啊),而std::function在类似的情况下会抛出一个异常。
3、不支持RTTI的依赖
std::copyable_function移除了类似 function::target_type() 或 target() 的接口。从而降低了大多数场景中内存和运行的开销

既然这二者有这些细节的不同,又提到前者并不是后者的替代者,那么如何应用到具体的开发场景中呢?
1、在大多数场景下,可以考虑使用std::copyable_function来替代std::function,特别是在新的项目中
2、不必强制必须使用std::copyable_function,当然如果遇到必须对限定符显示处理时,一定要使用它。毕竟其能提供更好的类型安全控制。
3、在新旧工程混用时,如无明确需求,优先使用std::copyable_function,如与std::function有冲突,再使用后者

三、例程

看一下相关的例程:

//  std::function
std::function<int(int)> func11 = [](int x) { return x+x; };//  std::copyable_function :必须使用常量调用且不抛异常
std::copyable_function<int(int) const> func26 = [](int x) noexcept { return x +x; };

再看一个草案中对比的例程:

//1
//c++11
auto lambda{[&]() /*const*/ {}};
function<void(void)> func{lambda};
const auto & ref{func};
func();
ref();//C++26
auto lambda{[&]() /*const*/ {}};
copyable_function<void(void)> func0{lambda};
const auto & ref0{func0};
func0();
ref0(); //err:operator() is NOT const!
copyable_function<void(void) const> func1{lambda};
const auto & ref1{func1};
func1();
ref1(); //operator() is const!

大家想了解更多可参看P2548R6提案文档。

四、总结

C++标准的发展,其实和大家朴素的想法是一致的。整体的方向是朝着强大易用不断前进,细节上不断的完善早期标准的一些问题,以期查漏补缺。一个技术点的形成不可能是一蹴而就的,尤其是在实际的场景应用中,会不断的暴露出其一些受限的短板或者没有考虑的地方,这样就会在后续的标准中有的放矢的进行完善。
回头再想想大家自己的实际开发,是不是也是这么一个过程呢?


文章转载自:

http://HknMLs54.qmtzq.cn
http://Pf29q1PG.qmtzq.cn
http://ny8cDSca.qmtzq.cn
http://uetWVHVP.qmtzq.cn
http://PpONUuw7.qmtzq.cn
http://m3HkJ6Pg.qmtzq.cn
http://nvdB9WL9.qmtzq.cn
http://G6XZ5OXT.qmtzq.cn
http://UHjyCZgP.qmtzq.cn
http://CRa4GreZ.qmtzq.cn
http://qsjdh1wq.qmtzq.cn
http://vakW0Len.qmtzq.cn
http://wbq5vdwK.qmtzq.cn
http://fggL89ke.qmtzq.cn
http://diB3UtTR.qmtzq.cn
http://HDWRtcKx.qmtzq.cn
http://0VfbpJDw.qmtzq.cn
http://S4PXhlaA.qmtzq.cn
http://qRPUAMQ8.qmtzq.cn
http://Y9fsKWCO.qmtzq.cn
http://jU30OdsF.qmtzq.cn
http://iqtC86CT.qmtzq.cn
http://zV5jszH5.qmtzq.cn
http://XR3ZLstn.qmtzq.cn
http://ZRHMAgEt.qmtzq.cn
http://TZH24b3H.qmtzq.cn
http://dOer7e91.qmtzq.cn
http://Oc3oEE57.qmtzq.cn
http://6rFmpmKz.qmtzq.cn
http://gI3uAMAZ.qmtzq.cn
http://www.dtcms.com/wzjs/635327.html

相关文章:

  • 权威的南昌网站建设合肥专业网站优化哪家好
  • 合江县住房建设规划局网站南昌网站怎么做seo
  • 个人官方网站怎么建设淮安网站设计
  • 建筑行业招聘网站推荐wordpress如何上传网页
  • 网站建设详细方案国土局网站建设经验
  • 西宁市网站设计高端好用的html模板网站
  • 北京网站建设设计网页设计商品页面制作
  • 南京优质网站建设方案江苏seo推广方案
  • 广东网站营销seo费用怎么制作图片带字
  • 义乌建站门户网站的重要性
  • 食品饮料网站建设wordpress代码高亮在线转换工具
  • wordpress 文章连续seo技巧是什么
  • 基于cms设计网站的背景意义怎么在网上卖东西赚钱
  • 榆次小学网站建设wordpress装主题失败
  • 中小企业商务网站建设自助建设wap网站
  • 海洋cms做电影网站好做吗群晖wordpress端口
  • 微信 微网站ios开发者网站
  • 什么网站源码做分类信息网站好天津seo标准
  • wordpress 艺术 主题 2018长沙网络seo公司助企业突破
  • 做网站的相关术语你不会百度吗网页生成
  • 网站开发什么开发语言好做网站申请域名的流程
  • 无锡网站优化排名推广免费咨询骨科医生回答在线
  • 网站业务员好做吗php网站开发专员招聘
  • 写作的网站有哪些帝国cms做网站流程
  • 嘉兴城乡建设局门户网站python爬数据做网站
  • 广州海珠区赤岗 新港网站建设公司wordpress禁止采集
  • 启源网站建设没电脑可以建网站吗
  • 做vlogger的网站有哪些网站如何建设成直播间
  • wordpress首页很慢福州seo代理计费
  • 2021手机能看的网站网站开发难学吗