判断 模板类型
火山类是可以写模板的..虽然不是很好用...但是没有提供"火山代码"判断 模板类型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_数据 = 值
}
}
类 测试模板类 <基础类 = 模板基础类 @模板实现类 = "整数">
{
#
}
。。没看明白 本帖最后由 hcwanz 于 2025-11-17 10:19 编辑
创世魂 发表于 2025-11-16 16:22
。。没看明白
c++的模版元语法 is_same_v 为相同类型则为真, 不同为假.
魂魂水平有待提高啊, 这样怎么能好好带领火山前进
不过确实, 按我理解这里不是得用 static_assert吗? constexpr还有这功能?
hcwanz 发表于 2025-11-17 10:12
c++的模版元语法 is_same_v 为相同类型则为真, 不同为假.
魂魂水平有待提高啊, 这样怎么能好好带领火山前 ...
这里用 constexpr 是非必要的,只是目前是编译期值。
也不可能写 static_assert,这返回的是逻辑型,又不是用来报错。 Xelloss0618 发表于 2025-11-17 12:18
这里用 constexpr 是非必要的,只是目前是编译期值。
也不可能写 static_assert,这返回的是逻辑型,又不 ...
不仅是非必要,这种语法应该是非法的。看到这段代码,我第一反应是编译不会报错吗?
在VS里写 if (constexpr()) 会提示语法错误, 但是能编译通过......
虽然代码行为是符合预期的,但还是不建议使用这种写法。
页:
[1]