123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- discard """
- output: '''
- 10
- 20
- int
- 20
- 3
- '''
- """
- import typetraits
- type
- FonConcept = concept x
- x.x is int
- GenericConcept[T] = concept x
- x.x is T
- const L = T.name.len
- Implementation = object
- x: int
- Closure = object
- f: proc()
- proc f1(x: FonConcept): Closure =
- result.f = proc () =
- echo x.x
- proc f2(x: GenericConcept): Closure =
- result.f = proc () =
- echo x.x
- echo GenericConcept.T.name
- proc f3[T](x: GenericConcept[T]): Closure =
- result.f = proc () =
- echo x.x
- echo x.L
- let x = Implementation(x: 10)
- let y = Implementation(x: 20)
- let a = x.f1
- let b = x.f2
- let c = x.f1
- let d = y.f2
- let e = y.f3
- a.f()
- d.f()
- e.f()
|