No C++ does not support that, there hacks to do so like create your own type and use operator overrides so you can detect = usage, but it’s something that would need to build from ground up in APIs. For example when you cast you type back to float* you won’t be able to detect changes anymore so entire engine would need to support your type. The prefred way in UE4 is to make variable private or protected and make set and get functions for it and change variable this way, the code from get and set function would be exectured on each use. You can see this theme in most of UE4 APIs
In case of UMG, you passing a pointer to variable (float*), which is not value state but memory address to variable which can be accessed from pointer in any time. UMG… or rather Slate that powers it, is hardware accelerated and it renders like a game on each frame, when it renders it grabs current state of variable from pointer he have, so there is no event it just takes current state of variable when drawing. Slate also support grabing values from function pointers, you point to function and object (like timer or delegate) and Slate will call function to get return value from it and display it, it using type called TAttribute to support static values, pointers and function pointers in same time: