UObject Pointers In Containers

Are all UObjects subject to being “trivially relocated” or just ones that are allocated as part of a collection?

My situation is that I have several UObjects that implement an interface and I want to have a std::unordered_set (or even a TSet) that objects use to register their existence and implementation of this interface.

The UObjects themselves are reference counted via TSharedPtr elsewhere, and will remove themselves from the unordered_set in their destructor. I do not want this Set to count as a ref on the object - they remove themselves from the Set when they are deleted.

I’ve been reading about how the UE4 collections assume the objects they contain are trivially relocatable. I believe in this case, since the object that the set is storing is a c++ pointer (memory address), and that itself is trivially relocatable, then I should be fine. Is this correct?