小蜗牛 发表于 2025-11-16 10:46:06

判断 模板类型

火山类是可以写模板的..虽然不是很好用...但是没有提供"火山代码"判断 模板类型1~8 的方法..
所以就撸了一个...不用谢,请叫我雷锋<火山程序 类型 = "通常" 版本 = 1 />

方法 模板类型是否相同 <公开 静态 类型 = 逻辑型 注释 = "<font color="#ff0000">逻辑型和整数型,会比较会返回真</font>,因为这是为了兼容 Windows API(其中 BOOL 是 int,TRUE=1, FALSE=0)。"
      @嵌入式方法 = "">
参数 模板类型 <注释 = "模板类型1~8" @需求类型 = 数据类型 @匹配类型 = 所有类型>
参数 类型 <@需求类型 = 数据类型 @匹配类型 = 所有类型>
{
    @ constexpr (std::is_same_v<@<模板类型>, @<类型>>)
}





这个一个小例子...
<火山程序 类型 = "通常" 版本 = 1 />

类 模板基础类 <折叠 @模板基础类 = 真>
{
    变量 m_数据 <类型 = 模板类型1>

    方法 取值 <公开 类型 = 模板类型1>
    {
      如果 (<font color="#ff0000">模板类型是否相同</font> (<font color="#0000ff">模板类型1</font>, <font color="#ff8c00">字节集类</font>))
      {
            全局信息框 ("字节集")
      }
      否则 (<font color="#ff0000">模板类型是否相同</font> (<font color="#0000ff">模板类型1</font>, <font color="#ff8c00">整数</font>))
      {
            全局信息框 ("整数")
      }
      返回 (m_数据)
    }

    方法 置值 <公开>
    参数 值 <类型 = 模板类型1>
    {
      m_数据 = 值

    }
}

类 测试模板类 <基础类 = 模板基础类 @模板实现类 = "整数">
{

    #
}




创世魂 发表于 2025-11-16 16:22:04

。。没看明白

hcwanz 发表于 2025-11-17 10:12:42

本帖最后由 hcwanz 于 2025-11-17 10:19 编辑

创世魂 发表于 2025-11-16 16:22
。。没看明白
c++的模版元语法 is_same_v 为相同类型则为真, 不同为假.

魂魂水平有待提高啊, 这样怎么能好好带领火山前进
不过确实, 按我理解这里不是得用 static_assert吗? constexpr还有这功能?

Xelloss0618 发表于 2025-11-17 12:18:13

hcwanz 发表于 2025-11-17 10:12
c++的模版元语法 is_same_v 为相同类型则为真, 不同为假.

魂魂水平有待提高啊, 这样怎么能好好带领火山前 ...

这里用 constexpr 是非必要的,只是目前是编译期值。
也不可能写 static_assert,这返回的是逻辑型,又不是用来报错。

龙纹 发表于 2025-11-17 18:43:02

Xelloss0618 发表于 2025-11-17 12:18
这里用 constexpr 是非必要的,只是目前是编译期值。
也不可能写 static_assert,这返回的是逻辑型,又不 ...

不仅是非必要,这种语法应该是非法的。看到这段代码,我第一反应是编译不会报错吗?
在VS里写 if (constexpr()) 会提示语法错误, 但是能编译通过......
虽然代码行为是符合预期的,但还是不建议使用这种写法。
页: [1]
查看完整版本: 判断 模板类型