     {         alternative_generate_function(OutputIterator& sink_, Context& ctx_               , Delimiter const& d, Attribute const& attr_)           : sink(sink_), ctx(ctx_), delim(d), attr(attr_) {}          template <typename Component>         bool operator()(Component const& component)         {             typedef                 typename traits::attribute_of<Component, Context>::type             expected_type;             typedef                 alternative_generate<Component, Attribute, expected_type>             generate;              // wrap the given output iterator avoid output as long as one             // component fails             detail::enable_buffering<OutputIterator> buffering(sink);             bool r = false;             bool failed = false;    // will be ignored             {                 detail::disable_counting<OutputIterator> nocounting(sink);                 r = generate::call(component, sink, ctx, delim, attr, failed);             }             if (r