我们在写一些模板参数的时候 可能需要判断模板的类型做一些特殊的处理,怎么办呢?
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标准就好了