Creating components at runtime with C++

I have searched for this answer and there are many but they are still a bit vague. I read one that claimed you do not need to call RegisterComponent manually if bAutoRegister is true for the component, but other examples have it.

I am not creating the component in the constructor with a default subobject pointer, but later after construction.

This question/answer seems to me to be the “right way”, but it does call RegisterComponent. Can someone confirm if it is needed or not?

It would also be good with official documentation on this (c++ only documentation and best practices I think are lacking in other areas too).