Comment écrire des fonctions templates?

Je perds mon latin sur ce truc :angry:

Ce code là marche (template de classe) :

template <class T> class test
{
	public: T t;
	test(T n) : t(n) { Serial.println(t) ; };
};

void setup() 
{
  Serial.begin(9600);
  test<int>(5) ;
}

void loop(){}

Et celui-là ne compile pas (template de fonction) :

template <class T> void test(T t)
{
	Serial.println(t) ;
}

void setup() 
{
  Serial.begin(9600);
  test<int>(5) ;
}

void loop(){}

Voilà l'erreur:

SandBox.ino:2:11: error: variable or field 'test' declared void
SandBox.ino:2:11: error: 'T' was not declared in this scope

Où j'ai faux ?

Merci de votre aide!

Hello,

Ton code compile en C++ standard...

Et en mettant le template dans un .h, qu'on #include après ?

On parle ici de GCC, qui implémente bien les templates. Dans l'exemple donné, on faisait exactement la même chose, mais avec des types de données différents. Cela entre parfaitement dans le desing pattern "patron de méthode" qui est implémenté en C++ par une fonction template :slight_smile: