Jesli musialbys napsac 5 razy kod dla roznych typow zmiennych, to w C++ przeciez od tego sa wzorce!
Moze nauczenie sie tego nie jest zbyt szybkie, ale pozwala pisac naprawde elegancki i zwarty kod. Zeby sprawdzac, czy typ zmiennej jest np. int mozesz uzyc konstrukcji:
if (*typeid(zmienna) == *typeid(int))
...
To jest oczywiscie bardzo rzadko potrzebne (nie widzialem jeszcze uzasadnionego uzycia). Ale jesli i to nie wystarcza, to w sytuacjach naprawde beznadziejnych mozna sie posluzyc definicjami parametryzowanymi preprocesora.
Jeszcze jedno: nie wiem dokladnie po co Ci to, ale byc moze nawet wzorce nie beda potrzebne.
Mozesz zrobic klase bazowa dla wszystkich typow, ktore w ten sposob chcesz sprawdzac (wtedy wbudowane oczywiscie odpadaja). Pozniej mozesz sprawdzac za pomoca dynamic_cast<> jakiego typu jest zmienna (zwroci 0, jesli zle rzutujesz lub zrzuci wyjatek bad_cast).