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