Note that `d[p]` and `d(arg)[p]` generate different parsers.
Having `directive<Derived, Subject>` means you still need a directive-gen, and you have to handle its `operator()` manually, which is the main reason I proposed the facade-based API, which automatically builds the scaffold for you.