Interesting suggestion. So rather than passing in explicitly double or float, you pass in your custom USTRUCT, which essentially is just a typedef on a double or float?
Crazy convoluted way to do it but if you absolutely must support UE4 and it won’t allow you to put the function definition inside C++ preprocessor tags, this effectively lets you do the same thing, it just moves the conditional preprocessor stuff to a new custom type rather than to that particular function.