I have a question. In the following code, the converter with static int generics fails. Are there any way to avoid this?
My purpose is to make C++-like constructor for which calling <Classname>(value) generates S object because the conventional constructor using init*** is inconvenient in programming with generics. I know that this is possible by using converter. Are there any other way to make this kind of constructor? type S[N:static[int]] = object a:int converter toS[N:static[int]](a:int):S[N] = S[N](a:a mod N) echo toS[13](19) # works #var x:S[13] = 19 # Error: type mismatch: got <int literal(19)> but expected 'S[13]' #echo S[13](19) # Error: type mismatch: got <int literal(19)> but expected 'S[13]' type S2[T] = object a:T converter toS2[T](a:T):S2[T] = S2[T](a:a) echo toS2(21) # works var y:S2[int] = 21 # works echo S2(21) # works Run