I'm a little disconcerted, that I cannot get your point... Exactly, why "_is clearly undefined_" or, maybe, what is meant by that. E.g.: type T1 = distinct int T2 = distinct int M = distinct int proc `*`(x, y: M): M {.borrow.} var A = 3.T1 var B = 5.T2 var C = M(A) * M(B) assert C==M(15) # that works, so ``*(x: M, y: M): M`` is defined... # further assuming ``'`` syntax exists var D = A'M * A'M assert D==T1(15) var E = A'M * B'M assert E.int==15 import typetraits echo E.type.name # ?
Maybe you just mean, that a proc, taking as arguments views (`'M`) of two or more different types should be prohibited?