It seems like the best way to go is to use dchar for strings (i.e. not have the struct as a template) as I need real characters for intersection purposes. When it comes to lookup, any input will need converting to dchars (I expect this can be done on the fly).
In C++ you would use iterators to do this kind of input conversion. I don't know what the technique is in D. Regards, Ben
