Partially instantiating templates?

Magnus Lie Hetland magnus at hetland.org
Tue Feb 1 07:15:57 PST 2011


On 2011-02-01 16:09:22 +0100, Simen kjaeraas said:

> Magnus Lie Hetland <magnus at hetland.org> wrote:
> 
>> Sort of related (though perhaps only remotely) is the following, which 
>> won't compile (Error: static assert "Bad unary function: f(a) for type 
>> int"):
> 
> Not related. unaryFun and binaryFun are simply glorified string mixins,
> and thus can only access functions that are available in the modules
> where they are mixed in. That would be std.functional. Because of that,
> local functions may not be used as string arguments for *naryFun.

That certainly makes sense. I just got thrown off by the example in 
std.algorithm:

  uint hashFun(string) { ... expensive computation ... }
  string[] array = ...;
  // Sort strings by hash, slow
  sort!("hashFun(a) < hashFun(b)")(array);

The only way this could work would be if hashFun was available to the 
sort template, I guess...?

-- 
Magnus Lie Hetland
http://hetland.org



More information about the Digitalmars-d-learn mailing list