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

做网站必须要有服务器吗中山最好的网站建设公司哪家好

做网站必须要有服务器吗,中山最好的网站建设公司哪家好,网站的请求服务做优先级,用jsp做的网站首页一、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/604665.html

相关文章:

  • 建个简单的网站网站管理的内容包括
  • 乐山市建设银行网站asp个人网站源码下载
  • 网站建设与网页设计美食wordpress 汽车模板
  • 看手机的网站叫什么网站开发一般用什么软件
  • 河南省建设教育协会网站首页wordpress查资料
  • 专业的企业网站设计与编辑可以给别人做ps设计的网站
  • 用户浏览网站的习惯房屋建筑图纸设计说明
  • 网站维护公司推荐建设网站平台的建议
  • 盐城做网站哪家最好邯郸做移动网站的地方
  • 网站工程师的职责网站开发于制作总结
  • 安丘市住房与城市建设路网站淘宝客app开发
  • 网站建设和制作怎么赚钱wordpress小工具调用
  • xunsearch做搜索网站做网站关于我们
  • 哈尔滨网站建设方案开发做那个网站的图客比较好
  • 自己做的网页加在网站文章上为什么打不开嘉兴网站建设搭建
  • 图片模板 网站源码wordpress菜单居右
  • 新会网站建设公司购物网站建设市场调查论文
  • wordpress中英网站插件如何免费制作网页
  • 南充北京网站建设国内最好的域名注册商
  • 个人网站设计要求360免费wifi怎么连接
  • 北京建设网站的公司兴田德润优惠北京百度网讯科技有限公司
  • 做网站的数据库公司注册网上核名几个字
  • 自己怎么做优惠搜网站西安h5建站
  • 网站排名下降怎么办做美食网站的需求
  • 衡水网站设计公司哪家专业织梦做网站详细教程
  • 网站开发与制作中期报告购买云服务器
  • 课程网站开发与设计网页设计与网站建设的热点
  • 新问网站设计国家开发公司
  • 自建网站支付问题包装袋设计
  • 湖北建设招标网 官方网站小程序第三方平台免费