En C++, il existe un mécanisme extrêmement pratique pour généré du code générique : les templates. Une fonction templatée est une fonction dont le code comporte un trou qui sera remplacé à la compilation par le nom d'un type, ou une valeur... Par exemple :
template <class T>
T read(const char *buffer)
{
T val;
memcpy(&val, buffer, sizeof(T));
return val;
}
Cette fonction lit un objet de type T sur un buffer. L'intérêt de cette fonction est très compréhensible : quel que soit le type qu'on fournit à la fonction, elle va fonctionner, en adaptant la taille à lire au type. C'est donc beaucoup plus rapide que d'écrire une fonction pour chaque type... et l'utilisation est également très simple :
read<int>(const char* buffer) // lit un entier sur le buffer read<double>(const char* buffer) // lit un double sur le buffer read<MaClass>(const char* buffer) // lit un objet de type "MaClass"
Mais cette syntaxe n'est qu'un sucre syntaxique, car en fait, on peut également faire des templates en C...