Actually my `directive` is a generator itself, __not__ a parser, `d[p]` genereates `directive_parser<Directive, Subject>` while `d(arg)[p] ` genereates `directive_parser<directive_caller<Directive, Args...>, Subject>`.

With regard to `as<T>` directive, what's wrong with
```c++
    template <typename T>
    struct as : directive<as<T>>
    {
        typedef T attribute_type;
        ...
    };
    
    as<std::string> const as_string{};
```
And which example are you referring to?