网站管理的含义二维码图片

张小明 2026/1/19 20:54:44
网站管理的含义,二维码图片,烟台网页公司联系方式,建美食网站有哪些原因一、介绍 在前面已经分析过C17中的std::void_t#xff0c;对其已经有了一个整体的认知#xff0c;同时对标准中对std::void_t的相关技术细节进行了分析说明。虽然对其的应用也进行了初步的分析#xff0c;但如何在实际的工程实践中进行应用以及其应用的场景#xff0c;还需…一、介绍在前面已经分析过C17中的std::void_t对其已经有了一个整体的认知同时对标准中对std::void_t的相关技术细节进行了分析说明。虽然对其的应用也进行了初步的分析但如何在实际的工程实践中进行应用以及其应用的场景还需要进一步的展开。先回忆一下标准库的实现templateclass...usingvoid_tvoid;它采用变参模板将任意数量的类型参数映射为 void 类型。不过对于刚刚接触模板技术的开发者来说可能不好理解可以按下面的方式来看就容易理解了templatetypename...Tsstructmake_void{using typevoid;};templatetypename...Tsusingvoid_ttypename make_voidTs...::type;当模板被实例化时make_voidTs…会让其内部成员type始终是void类型。其本质也是依赖于SFINAE技术。即模板参数列表中的类型或表达式比如decltype(…)无效时std::void_t的别名定义会无法定义成功进而触发 SFINAE将该特化模板从候选模板中移除不会引发编译错误。二、工程实践的应用方式在实际的工程实践中应用的场景很多但应用的方法主要包括做为默认值模板开发中经常会遇到默认参数的情况templatetypename T,typename Ustd::void_tstructDemo;SFINAE的触发与decltype等配合使用进行SFINAE的触发比如下面的情况// 通用模板templatetypename T,typenamevoidclass Demo{...};templatetypename Tclass DemoT,std::void_tdecltype(std::declvalT().try()),decltype(std::declvalT().tryTest()){...};模板的特化处理利用std::void_t进行模板的偏特化// size() 成员函数检测templatetypename T,typenamevoidstructcheckSize:std::false_type{};templatetypename TstructcheckSizeT,std::void_tdecltype(std::declvalT().size()):std::true_type{};std::void_t应用非常广泛它可以在SFINAE的应用中大大减化相关的复杂度同时在某些C20概念无法应用的场景下它又可以起到某些替换的能力 。虽然上面的总结有些粗浅但也是从另外一个角度对std::void_t的应用进行一个初步的尝试。大家可以继续在此基础上进行补充加强自己的学习和总结能力。三、应用场景虽然在前面的std::void_t说明分析中对其应用进行了初步的分析总结但条理性不太清楚这次再整体总结一下类型特性的单一检测如常见的属性、函数以及相关特定的操作如操作运算符、智能指针和嵌套等等多类型特性的检测即对属性、函数等进行多项控制检测SFINAE的应用即将std::void_t应用于复杂的SFINAE技术应用中如表达式的有效性等实现Conecpts这种一般属于开发者在早期版本中想应用一些类似概念的实现四、例程看一下相关应用例程#includeiostream#includetype_traits// 检测类型别名templatetypename,typenamestd::void_tstructcheck_type_member:std::false_type{};templatetypename Tstructcheck_type_memberT,std::void_ttypename T::type:std::true_type{};// 检测成员变量templatetypename,typenamestd::void_tstructcheck_member:std::false_type{};templatetypename Tstructcheck_memberT,std::void_tdecltype(T::data):std::true_type{};// 检测成员函数templatetypename,typenamestd::void_tstructcheck_display:std::false_type{};templatetypename Tstructcheck_displayT,std::void_tdecltype(std::declvalT().display()):std::true_type{};// 检测智能指针templatetypename,typenamestd::void_tstructis_smart_pointer:std::false_type{};templatetypename Tstructis_smart_pointerT,std::void_tdecltype(std::declvalT().operator-()),decltype(std::declvalT().get()):std::true_type{};structDemoType{using typeint;};structDemoNoType{};structDemoMember{intdata;};structDemoNoMember{};structDemoDisplay{voiddisplay(){}};structDemoNoDisplay{};structDemoSmartPtr{int*operator-();void*get();};structDemoNotSmart{};intmain(){std::couttype is exist: check_type_memberDemoType::valuestd::endl;std::couttype is exist: check_type_memberDemoNoType::valuestd::endl;std::coutDoes member data exist: check_memberDemoMember::valuestd::endl;std::coutDoes member data exist: check_memberDemoNoMember::valuestd::endl;std::coutfunction:display is: check_displayDemoDisplay::valuestd::endl;std::coutfunction:display is: check_displayDemoNoDisplay::valuestd::endl;std::coutSmartPtr :is a smart pointer: is_smart_pointerDemoSmartPtr::valuestd::endl;std::coutNotSmart: is a smart pointer:is_smart_pointerDemoNotSmart::valuestd::endl;return0;}前面的is_detected的实现也利用了std::void_t大家可以回过头去看看这样可以互相印证加深理解。另外如果想进行联合检测除了使用传统的方法如SFINAE外也可以使用std::conjunction来进行多个状态值的整体判断。在看明白上述的代码后就可以从网上找一段复杂的相关的例子自行拆解会发现很容易就明白了开发者编写的目的。五、总结std::void_t虽然是在C17中引入的但其实在早期的版本中就有类似的实践。大家可以理解为std::void_t是对SFINAE技术和模板特化的一种标准化处理。通过对std::void_t的应用大家可以从中学习一些相关的开发技巧引入到自己的开发中去。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

如何加强校园网站建设定制网站制作公司哪家好

终极GeoJSON.io实战指南:5分钟成为地图数据编辑高手 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io 还在为复杂的地理数据编辑工具头疼吗&…

张小明 2026/1/17 18:44:06 网站建设

网站编辑的岗位职责注册网站建设公司主营项目类别

你是否曾在手机上玩PSP游戏时,因为虚拟按键不灵敏而错失关键操作?是否觉得默认的控制布局难以适应不同游戏的需求?PPSSPP作为一款跨平台PSP模拟器,其强大的控制配置系统能帮你彻底解决这些问题。本文将带你深入探索如何通过简单设…

张小明 2026/1/17 18:44:07 网站建设

怎样制作免费网站打赏网站怎么建设

Wan2.2-T2V-A14B GPU算力:解锁大规模视频生成新范式在短视频日活破十亿、广告内容按分钟迭代的今天,传统影视制作流程正面临前所未有的效率瓶颈。一个30秒的品牌宣传片,从脚本到成片动辄数周,而市场需求却要求“上午提需求&#…

张小明 2026/1/17 18:44:08 网站建设

百度建网站要多少钱网站在线咨询怎么做

腾讯混元3D-Part:从零开始构建智能部件生成工作流 【免费下载链接】Hunyuan3D-Part 腾讯混元3D-Part 项目地址: https://ai.gitcode.com/tencent_hunyuan/Hunyuan3D-Part 在3D建模领域,你是否曾因部件分割的繁琐工作而困扰?传统手动分…

张小明 2026/1/17 18:44:08 网站建设

金种子酒业网站建设wordpress火车头采集

论文洋洋洒洒几万字,答辩PPT该如何取舍?别慌,让AI当你的“内容策展人”!当论文写作终于画上句号,下一个让人头大的挑战接踵而至:答辩PPT怎么做? 面对自己心血凝结的数万文字,如何提炼…

张小明 2026/1/17 18:44:09 网站建设

程序员源码网站哈尔滨精品建站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个基于AI的Spring应用漏洞扫描工具,重点检测CVE-2022-22965漏洞。要求:1. 能够解析Java/Spring项目结构 2. 自动识别存在漏洞的版本 3. 检测不安全的参…

张小明 2026/1/17 18:44:09 网站建设