Few fixes
UE4 reflection system is the one that does not support types that it’s can’t handle, but you are free to use them as long as you not gonna use it with reflection system (meaning outside anything maked with UPROPERTY() or UFUNCTION()), in fact engine it self uses those types, even non-UObject classes or functions in USTRUCT()
Those have nothing to do with blueprint classes, and it’s not generated by UBT but UHT (UnrealHeaderTool). It’s a header file that contains extra body for your class which you paste in to it via GENERATED_BODY(), it’s generated based on UMACROS (UPROPERTY(), UFUNCTION() UCLASS() etc, they in reality are dummy macros which compiler replace with emptyness, so it ignored by it), it not only generates header files, there extra cpp file generated which i will talk in a secound.
C++ it self does not have reflection system (in fact it does not need it, main point of C++ is to generate native code), everything is turned in to memory addresses and if non of those addresses are helt in pointer, generated native code (code executed by CPU generated by compiler from your C++ code) is not self aware of what functions and varables it has… because native code exclusivly use memery addresses. Or else C++ program register those addresses, thing is registrating those addresses require a code, so designing reflection system usally involves C++ functions that registers invidual functions and varables as a pointer varables in memoery, which C++ code can refrence to them, sounds like a extra work isn’t? …so why you never did that in UE4? Thats what UHT what do for you It takes UMACROS and based whats inside it and thing below it it generates extra C++ code in header files for each UCLASS() located in “Intermediate\Build\Win64\UE4Editor\Inc\ModuleName”. Cpp file to do registration, header files (as i said above) add extra stuff to your class (for example declers *_Implementation and *_Validation ,in USTRUCT it declers StaticStruct() function) , include of generted header it needs to be last so it takes all other includes used in header file (as include pastes content of the other file in to this file). It’s not just reflection system but do some other automatization work.
So saying it’s “blueprint class” is kind of out of place, it makes engine see you classes, functions and varables which later can be used to build extra features based on that data in engine and mostly in editor. Reflection system also allows to also create virtual classes, function and varbales… and this is what excaly blueprint does it attach classes and oither stuff which sits in virtual machine that powers Blueprint in to it and because they are equile there with native code form C++ it allows to interact with eachother, C++ can call VM functions and VM can call C++ functions. So UE4 reflection system not only functions as reflection system for native code from C++, but also as reflection system for blueprint VM
So yea there is no such thing as “UE4 C++”, it’s normal C++ just with fancy tools