31. decltype 宏和模板函数注释
模板为 Daslang 提供了类似模板的例程集合。
所有函数和符号都在 “templates ”模块中,使用 require 可以访问该模块。
require daslib/templates
31.1. 函数注释
- template
该宏用于删除泛型函数实例化中未使用的(模板)参数。 指定 [template(x)] 时,参数 x 将从函数调用中移除,但实例类型保持不变。 函数实例化的调用也会随之调整。 例如:
[template (a), sideeffects]
def boo ( x : int; a : auto(TT) ) // when boo(1,type<int>)
return "{x}_{typeinfo(typename type<TT>)}"
...
boo(1,type<int>) // will be replaced with boo(1). instace will print "1_int"
31.2. 调用宏
- decltype
此宏返回相应表达式的 ast::TypeDecl。例如:
let x = 1
let y <- decltype(x) // [[TypeDecl() baseType==Type tInt, flags=TypeDeclFlags constant | TypeDeclFlags ref]]
- decltype_noref
此宏返回相应表达式的 TypeDecl,减去 ref (&) 部分。