Como colocar diferentes tipos de modelo em um vetor

Gostaria de construir uma mensagem com tamanho ou número desconhecido de argumentos. Peguei um modelo simples como

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

e com alguns sobrecarregados

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

(o mesmo para string e assim por diante) Eu tento colocar tudo em um vetor. Eu tente

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

mas nada disso parece funcionar. Existe uma maneira de fazer isso? Desde já, obrigado

questionAnswers(3)

yourAnswerToTheQuestion