Cómo poner diferentes tipos de plantillas en un vector

Me gustaría construir un mensaje con longitud desconocida o número de argumentos. Tomé una plantilla simple como

template <typename T> class Argument {
public:
    int size;
    int type;
    T data;
};

y con algunos @ sobrecargad

addMessage (int value) {
    Argument<int> *a = new Argument<int>;
    vec.push_back(a);
}

(lo mismo para la cadena, etc.) Intento insertarlo todo en un vector. Lo intent

std::vector<Argument* > vec;
std::vector<Argument<typename T>* > vec;
std::vector<Argument<>* > vec;

pero nada de esto parece funcionar. ¿Hay alguna forma de hacer esto? Gracias por adelantado

Respuestas a la pregunta(3)

Su respuesta a la pregunta