c++ 判断模板参数类型

博客探讨了在C++中如何使用模板参数进行类型检查,并在编译期间执行特定操作。通过std::is_same示例,解释了当尝试调用不存在的成员函数时的编译错误。讨论了constexpr在编译期控制中的作用,以及C++17的if constexpr语句解决的编译警告问题。
摘要由CSDN通过智能技术生成

我们在写一些模板参数的时候 可能需要判断模板的类型做一些特殊的处理,怎么办呢?

std::is_same<T,type>
T:就传模板参数类型
type: 就传递要比较的类型
这个demo 很简单了

在这里插入图片描述
看一下稍微复杂一点的
在这里插入图片描述

这里呢 我传入一个结构体, 我判断模板参数是结构体Meta后 我执行run函数, 会出现什么情况呢?

编译失败啥原因呢?
在这里插入图片描述
ok 我给run 加个const

在这里插入图片描述

这个报错比较清晰了,说std::string 没有 run 函数

奇怪了 外面加了一层type 判断这个if 理论上不应该进啊

是的 是不应该进,但是这个是编译失败 不是执行, 那怎么控制编译期的呢?

通过它 constexpr, 这里它的用法我不多说了

在这里插入图片描述
发现还是不行 编译通过了 跑起来了 但是两个 if都没有进入

warning C4984: “if constexpr” 是一种 C++17 语言扩展

ok 把项目改为 支持c++17标准就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值