首页 > 编程语言 >c++ true_type与false_type

c++ true_type与false_type

时间:2024-05-13 15:42:52浏览次数:17  
标签:AClass false type 编译 nmsp1 true

std::true_type和std::false_type

实际上是类型别名

是两个类型(类模板)

注意区分true_type与false_type与true和false区别

  • true_typefalse_type代表类型

  • true,false代表值

nmsp1::FalseType myfunc1();//返回假这种含义
nmsp1::TrueType myfunc2();//返回真这种含义

自己模拟实现

namespace nmsp1 {
    template<bool val>
    struct BoolConstant {
        using type = BoolConstant<val>;

        static constexpr bool value = val;
    };

    using TrueType = BoolConstant<true>;
    using FalseType = BoolConstant<false>;


    template<typename T,bool val>
    struct AClass
    {
        AClass() {
            cout << "AClass()执行了" << endl;
            //if(val) {
            //    T tmpa = 15;
            //}
            //else {
            //    T tmpa = "abc";    //int tmpa = "abc";
            //}

            //if constexpr (val) {
            //    T tmpa = 15;
            //}
            //else {
            //    T tmpa = "abc";    //int tmpa = "abc";
            //}

            AClassEx(BoolConstant<val>());//创建一个临时对象
        }

        void AClassEx(TrueType) {
            T tmpa = 15;
        }
        void AClassEx(FalseType) {
            T tmpa = "abc";
        }

        //当为ture时只会去编译重载版本的TureType
    };
}

nmsp1::AClass<int, true> tmpobj1;
//如果是第一条注释的if语句会报const char[4]无法转换为int
nmsp1::AClass<string, false> tmpobj2;
//如果是第一条注释的if语句会报无法从int转换为string

 

编译器设计时的考量,编译器是能够在编译器时期判断出来执行AClass类模板构造函数的哪个分支的,但从编译出代码这个角度来说,不管是哪个条件分支都会去编译,那么编译false分支就会报错.

if constexpr:属于编译期间if语句,可以解决上面
角度来说,不管是哪个条件分支都会去编译,那么编译false分支就会报错.

if constexpr:属于编译期间if语句,可以解决上面


原文链接:https://blog.csdn.net/m0_51271123/article/details/121780266

标签:AClass,false,type,编译,nmsp1,true
From: https://www.cnblogs.com/bwbfight/p/18189348

相关文章

  • 【pytest】将测试用例内的数据回填给fixtrue 中
    【背景】每个测试用例生成对应的log文件,需要将测试脚本名称传给log对象,生成对于的log文件【分析】方法一:使用@pytest.mark.parametrize的 indirect=True ,参数1:执行对应的函数(fixtrue中的函数名称) 参数2:函数对应的参数  参考:Pytest系列(10)-fixture传参数reques......
  • java.lang.IllegalArgumentException: Invalid value type for attribute 'factoryBea
    简介前排提示:这个错误一般是由于Spring新版本导致的与其他框架不兼容现象,解决办法一般是升级其他框架版本。使用springboot-3.2.5和myabtis-plus-3.5.0搭建开发环境时,启动Springboot程序时报错,报错信息:点击查看代码java.lang.IllegalArgumentException:Invalidvalu......
  • 使用TypeScript编写一个函数getPackageSize,该函数接收一个配置对象packageOpt作为参数
    使用TypeScript编写一个函数getPackageSize,该函数接收一个配置对象packageOpt作为参数,用于获取指定文件夹中所有文件的总大小,并根据配置决定是否返回已转换单位的大小值或直接通过回调函数返回字节大小。下面是一个基于Node.js环境的实现示例,因为直接在浏览器环境中操作文件系统......
  • ..\HAL_LIB\Inc\stm32l4xx_hal_rcc_ex.h(2424): error: #20: identifier "HAL_Sta
    stm32工程编译时遇到这个错误,显示HAL_StatusTypeDef没有被定义,但是go todefinition又能找到定义 后来在网上寻找解决办法,结果发现竟然是#include"stm32l4xx_hal_spi.h"#include"stm32l4xx_hal.h"这两个的顺序问题,#include"stm32l4xx_hal.h"头文件包含必须在最前面,真是......
  • python-类型提示(type hinting)
    类型提示在Python3.5及更高版本中引入,能够让代码更具可读性和可维护性,并帮助静态类型检查工具进行代码分析。以下是关于类型提示的一些详细介绍和示例:类型提示概述基本语法:函数参数类型提示:deffunction_name(param:type)->return_type:返回值类型提示:deffunction_na......
  • NetSuite-Get-specific-Custom-Record-Types-and-related-sub-Custom-Fields-CarlZeng
    NetSuite:GetspecificCustomRecordTypesandrelatedsubCustomFields背景以前当使用search.create({})来获取数据时,我们需要制定特定的数据返回列;例如:search.createColumn(options)而query可以使用SELECT*FROM来动态返回所有的数据列(这在有的时候是一个优点),那么如......
  • ubuntu22 python2 pyinstaller 打包报错:'NoneType' object has no attribute 'groups'
    前言最近有个需求,需要在ubnutu22上使用pyinstaller打包一个python2的文件。中间遇到了一些问题:pip2installpyinstaller报错解决方案:pip2installpyinstaller==3.6python2和python3的pyinstaller如何同时存在,我想把python2的pyinstaller命名为pyin......
  • post请求下载文件,"Content-Type": "application/x-www-form-urlencoded",
    importaxiosfrom"axios";importqsfrom"qs";if(item.resourceName=="导出"){const[startTime="",endTime=""]=this.rangeTime||[];letparams={carNumber:this.carNu......
  • 关于vue3中使用echarts设置tooltip的type为axis不显示的问题
    因为vue3中的数据对象是用的proxy监听的,要取值需要用value等方法取出来,解决方法:使用markRaw让echarts从监听对象变成普通对象!在Vue3中,markRaw是一个用于告诉Vue的响应性系统不要对某个对象进行转换或追踪其响应性的函数。当你有一个对象,并且你确定你不需要它成为响应性......
  • GeometryCollection 的类型映射器(TypeHandler)
    byemanjusakafromhttps://www.emanjusaka.top/2024/05/mybatis-typeHandler-geometryCollection彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。GeometryCollection是GeoJSON数据模型中的一个类型,用于表示一个几何对象的集合。MySQL8中支持了GeometryCol......