On 2011-02-01 12:37:05 +0100, Simen kjaeraas said:

Magnus Lie Hetland <[email protected]> wrote:

Hm. Just to make sure this *is* a bug, and I'm not just being a dumbass ... this is a tiny program that illustrates the problem (i.e., gives the error above). Perhaps the use of a local function here really is prohibited...?

Maybe it is. It really shouldn't be, though. If this is not a bug, then
Walter has a bug for not accepting this as a bug. :p

Hehe :)

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"):

 import std.functional, std.stdio;
 int f(int x) {return x;}
 void main() {
     alias unaryFun!("f(a)") g;
     writeln(g(3));
 }

It may not be related -- but I've been trying to use the string representation instead of lambda in some places, and I thought maybe a similar name lookup problem may be present in the unaryFun template? (The detauls of the implementation are a bit beyond me at the moment...)

Maybe there's an unstated restriction against using functions in the unaryFun string parameter (at least I couldn't find it in the docs) -- but ... there is the following example in the docs for std.algorithms:

 sort!("hashFun(a) < hashFun(b)")(array);

So it would seem like this *should* work?

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

Reply via email to