On 10/13/13 16:43, Benjamin Thaut wrote: > Am 10.10.2013 17:45, schrieb Namespace: >> On Thursday, 10 October 2013 at 15:15:45 UTC, bearophile wrote: >>> Namespace: >>> >>>> You mean like this? >>>> ---- >>>> void foo(T)(extern(C) void function(T*) func) { >>>> >>>> } >>>> ---- >>>> >>>> That prints: Error: basic type expected, not extern >>> >>> In theory that's correct, in practice the compiler refuses that, it's >>> in Bugzilla, so try to define the type outside the signature (untested): >>> >>> alias TF = extern(C) void function(T*); >>> >>> void foo(T)(TF func) {} >>> >>> Bye, >>> bearophile >> >> /d917/f732.d(8): Error: basic type expected, not extern >> /d917/f732.d(8): Error: semicolon expected to close alias declaration >> /d917/f732.d(8): Error: no identifier for declarator void function(T*) > > I found a possible workaround. Its ugly as hell, but at least it works until > the bugs are fixed.
There's no need for such ugly workarounds -- this is just a problem with the *new* alias syntax. The old one accepts it (unless this changed recently): alias extern(C) static void function(int*) Func_t; artur