Wrapping foo in another delegate seems to at least compile.
Same as splitting out the struct. I don't understand why a struct outside of a function gets treated differently than a static struct.
``` auto split(alias F,R)(R r){ return splitter!(F,R)(r); } private struct splitter(alias F, R){ R r; auto front()=>r.takeuntil(r.findnext!F); void popFront(){r=r.findnext!F;} bool empty()=>r.empty; } ```