UPD. I've just got terrorized by the fact that I don't even need path-dependent types. There are places where C++ is not type safe through all the sorts of compile-time magic I've put into that program. Java-style child classes would be enough. I don't even see a way child classes are incompatible to "zero overhead" rule. Gosh, there's something in Java that is not disgusting after all.
For all the interested among the readers, here's a description of the use case. Write a PEG-parser combinator language in C++ that is optimized by having primitives implemented via CRTP. Avoid passing end iterator of the parsed range through all the combinators.