Isn't it possible to unify functions which work on compile-time and run-time arguments?
What I mean is, if curry detects that you're currying a compile-time argument against a template, then it should do what your PartialTemplate/StaticCurry would do. It seems odd having to create 'static' counterparts to functions in Phobos. So far I only know of staticIndexOf and staticMap. But adding more would seem like duplicating the effort and creating a sort of std.staticAlgorithm