> If I understand you correctly, you wanted the client/user of the module to 
> provide their own initElement proc of their type, didn't you?

Yes

> In that case, you're able to ensure the compiler to check whether the user 
> provide their own initElement using compile proc.

The problem is not so much with telling the client to define `initElement` in 
his code. But for the compiler to link all definitions of that proc that are 
spread between the generic module and the client module, with overloading.

I've tried to [reproduce the problem in the 
playground](https://play.nim-lang.org/#ix=277G).

I have to provide an `initElement` proc in the generic module in order to 
compile `foo[T]` (line #10). That's the reason there's a forward declaration of 
`initElement` (line #7).

The problem occurs when the client defines `initElement` in his code (line 
#30). The compiler complains that `Error: overloaded 'initElement' leads to 
ambiguous calls` when the client wants to call the `foo` proc from the generic 
module (line #37).

Reply via email to