In reply to abs:
Ok, after a lot of searching I believe I finally understood the root cause of my issue through this article from the ubiquitous Dave Rich:
Parameterized Classes, Static Members and the Factory Macros
Being the parametrized class generic, i.e. it cannot be created without a specialization, everything got messed up. So my current workaround is to instantiate the extended_object (which specializes base_object) in the base_component, which is now less generic but actually works.
It would be interesting to know other opinions on this approach and whether there’s a more elegant solution to my problem.