As the compiler converts a struct into multiple basic streams and underlying hardware doesn't allow muliple scatter streams in a kernel, using struct for a scatter stream is not possible.
Using struct for gather streams should not be a problem.
There could be a bug if you use two gather streams based on structs, if you see you aren't getting the right elements it could be this. I've only tested this bug using two "float5" (>128 bits) gather streams.