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?

Reply via email to