(non-)extern(C) function parameter vs templates
"Luís
"Luís
Tue Sep 17 06:36:22 PDT 2013
This works:
extern(C) alias F = void function();
alias G = void function();
void foo(F f) {}
void foo(G g) {}
Indeed, the correct foo is called, depending on whether the
passed function is extern(C) or not (although I must say that the
syntax for declaring the alias F is not good, IMO; the extern(C)
should come after the equal sign).
Yet, the following does not work:
void foo(T)(F f) {}
void foo(G g) {}
Error: function foo conflicts with template foo(T)(F f).
or
void foo(F f) {}
void foo(T)(G g) {}
Error: template foo(T)(E e) conflicts with function foo.
It this not incoherent? If non-templated functions can overload
on extern(C)/non-extern(C) function parameter, why can't
templated functions?
More information about the Digitalmars-d
mailing list