L'intérêt des références, c'est entre autres que ça harmonise la syntaxe entre objet alloué localement (std::string ma_chaine) et objet déclaré et/ou

alloué en dehors de la fonction, dont on prendrait une référence (par exemple un paramètre de type std::string&) ^^
Sasume>
ben si tu veux pouvoir modifier le pointeur, c'est normal que tu puisses pas en faire un T&... sinon après pour pouvoir modifier le T& en question (en le passant par exemple à ta fonction incrementer()) il faudrait que T&& soit un type valide, et là ça poserait évidemment une montagne de problèmes ^^ (est-ce qu'une affectation doit modifier ce vers quoi pointe le T& ou est-ce qu'elle doit appeler operator=() sur le T ? dans chacun des deux cas tu casserais une propriété importante des références)
C'est pour ça que T& n'est pas véritablement un type à part entière comme T*, du point de vue du typage c'est plutôt un T avec un petit qqch en plus

(d'ailleurs c'
est effectivement un T, tu peux l'utiliser partout où on attend un paramètre de type T) Si tu veux avoir la flexibilité d'un pointeur modifiable, il faut que les indirections soient explicites, donc il faut utiliser un pointeur type C ou une classe de type "smart pointer"... Si tu n'as pas besoin de cette flexibilité, les références sont faites pour
