Checking function callability in D1 (aka static try-catch)

Christian Kamm kamm-incasoftware at removethis.de
Sun Dec 7 02:08:59 PST 2008


> This topic came up (again) fairly recently, and a solution was
> proposed, but I found a case where that solution doesn't work.
> 
> The objective is to do a static check to see if something is callable
> with particular argument types, and if so call it.
> 
> The proposed solution was to use '.init' like so:
> 
>     static if (is(typeof( some_function(ArgType.init) ))) {
>         // call some_function , or make an alias to it or whatever
>     }
> 
> But this doesn't always work if some function takes a ref argument.

I didn't follow the original discussion, but what about:

template makeValue(T...) { T makeValue; }
template isCallable(alias s, ArgTy...) {
  const bool isCallable = is(typeof(s(makeValue!(ArgTy))));
}




More information about the Digitalmars-d mailing list