On 5/02/2016 10:07 PM, tsbockman wrote:

I think it makes sense (when actually linking to C) to allow stuff like
druntime's creative use of overloads. The signatures of the two
bsd_signal() overloads are compatible (from C's perspective), so why not?

However, multiple `extern(C)` overloads that differ in the number or
size of arguments should trigger a warning. Signed versus unsigned or
even int versus floating point is more of a gray area.


That's what I meant by binary compatible.

Overloads with conflicting pointer types should definitely be allowed,
but ideally the compiler would force them to be marked @system or
@trusted, since there is an implied unsafe cast in there somewhere.

Safety on C functions is always going to need to be hand verified, the presence of overloads doesn't change that. Conflicting pointer types are pretty much the same as a function taking void* - all the unsafe stuff is on the other side and invisible to the D compiler.

Reply via email to