I wouldn't worry about having to write generators. After all, this approach wouldn't work for the `as<T>` directive, nor for directives that have a bunch of logic and members derived from the attributes and/or subject. I do worry a lot about lazy arguments and I think this approach is the right one for that, I only hope it could reconcile with usual constructors, members, etc... Let me give this some thought.

On a side note, I noticed in one of your examples that an instance of the directive itself serves as the generator. Is that correct? I don't think that's a good approach, and I don't think it would be difficult to move that logic away from the parser into a nested `generator` member struct. Would it be feasible to do that while maintaining all the other goals?