Is what you are looking for not just classical inherritance? I.e. something Like
class ComponentA : public ComponentBase {
RendererBase& renderer;
ComponentA(RederBase& r):renderer(r) {}
}
class RenderBase {
// Maybe some mandetory virtual functions in here
};
class RendererTypeFloat : public RenderBase {
RendererTypeFloat(std::vector<float> verts) : vertices(verts){};
std::vector<float> vertices;
}
class RendererTypeInt : public RenderBase {
RendererTypeInt(std::vector<int> verts) : vertices(verts){};
std::vector<int> vertices;
}