I talked to Tom Stachowiak, who couldn't spot anything wrong with the code. I believe this is a bug in std.bind (or maybe std.traits.) Has anyone else seen this?
With 2.047: ---- import std.bind; import std.stdio; void g (int a, int b) { int c = a + b; } void main() { auto g1 = bind(&g, _0, _0); writeln(typeid(typeof(g1))); } --- gives C:\tools\dmd2\windows\bin\..\..\src\phobos\std\bind.d(977): Error: template instance ParameterTypeTuple!(const(EmptySlot)*) does not match template declaration ParameterTypeTuple(dg...) if (dg.length == 1 && isCallable!(dg))