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

八年级信息所用软件做网站网站建设怎样才能吸引顾客

八年级信息所用软件做网站,网站建设怎样才能吸引顾客,响应式网页设计什么意思,wordpress登录才可评论一、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://www.dtcms.com/a/424344.html

相关文章:

  • 安卓基础006-视图
  • 建设标准 免费下载网站html5和h5的区别
  • 【展厅多媒体】大数据分析平台,展厅运营的“智慧眼”
  • 郑州网站建设公司锐客科技上海有名的设计工作室
  • 日期excel导入设置,导入表格实现日期批量打印
  • 再次使用xca软件生成自签证书
  • 【小白入门docker】创建Spring Boot Hello World应用制作Docker镜像并运行
  • 【Redis学习】String字符串
  • 项目实战:ecshop
  • 白城北京网站建设邵阳小学网站建设
  • SpringBoot 的配置文件与日志
  • 物联网技术与应用第三节课笔记
  • 【Java】P10 面向对象编程完全指南(S1-2 基础篇 包管理与导入)
  • C++ 特性 --内部类 模板类中取出来类类型问题
  • ip地址直接访问网站东莞市网络seo推广企业
  • 5090裸金属租用:捷智算助力企业数字化转型
  • 北京网站建设设计南阳网站建设哪家好
  • 大模型原理与实践:第一章-NLP基础概念完整指南_第1部分-概念和发展历史
  • 国企门户网站建设方案电子商务网站策划方案
  • 【Linux】cgdb调试工具的使用
  • 南京建设网站要多少钱线上推广活动
  • 做网站专题页需要注意什么app制作开发报价
  • iTerm2使用Shell Integration优雅地实现单个文件上传与下载
  • 怎样做网站漂浮精通网站开发
  • 西安网站制作sxyun昆明网站建设公司哪家好
  • 突破NER性能瓶颈:BERT与LLM协同的混合架构实践
  • 网站建设与管理课件seo排名优化联系13火星软件
  • 网站做前端去国外做外卖网站
  • 分布式任务事务框架设计与实现方案
  • 漳州 网站建设多少钱成都旅游攻略景点必去