泛型推断的局限

泛型实例化时不会推断出 var T 或 typedesc[T]。下面的例子是不允许的:

  1. proc g[T](f: proc(x: T); x: T) =
  2. f(x)
  3. proc c(y: int) = echo y
  4. proc v(y: var int) =
  5. y += 100
  6. var i: int
  7. # 允许: 'T' 被推断为 'int' 类型
  8. g(c, 42)
  9. # 不允许: 'T' 不会被推断为 'var int'
  10. g(v, i)
  11. # 也不允许: 明确地通过 'var int' 实例化
  12. g[var int](v, i)