Typed 参数和 untyped 参数的比较
untyped 参数表示表达式传递给模板前不执行符号的查找和类型的解析。这意味着,比如,未声明 的标识符也能传递给模板:
template declareInt(x: untyped) =
var x: int
declareInt(x) # 可以
x = 3
template declareInt(x: typed) =
var x: int
declareInt(x) # 不正确,因为此处 x 没有被声明,所以它没有类型
如果一个模板的每个参数都是 untyped 的,则称它为 immediate 模板。 由于历史原因,模板可以用 immediate 编译指示显式地标记,这类模板不参与重载解析,参数的类型也将被编译器 忽略。显式声明的即时模板现在已经弃用。
注意: 由于历史原因, stmt 是 typed 的别名, expr 是 untyped 的别名,但它们都被移除了。
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .