Se la tua API si aspetta una struttura siffatta:
codice:
struct vertex
{
   glm::vec3 pos;
   glm::vec2 UV
}
dovrebbe essere sufficiente:
codice:
struct vertex
{
   glm::vec3 pos;
   glm::vec2 UV
}

template <class T>
struct wrapper {
    ... // varie cose
    T get_data() { return data; }
}

struct MyVertex {
    vertex vtype;

    wrapper< glm::vec3 > pos;
    wrapper< glm::vec2 > UV;  

    vertex* get_api_vertex() {
        vtype.pos = pos.get_data();
        vtype.UV = UV.get_data();
        return &vtype; 
    }
}
e dove hai il const void* passi: myVertex.get_api_vertex()
Non vedo a cosa ti serva il CManager ne le typelist (o variadic template in C++)