Is there a way to create a blueprint node that returns different types of structs depending on its type argument?
I don’t think so. C++ is statically typed, meaning that the return type must be well defined and known at compile time. I think that applies to blueprints as well, since blueprints is just visual representations of the code.
But you can cast a void* to anything in C++. Is that possible in BPs?