Je m'explique :

Voici un code simple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
int foo()
{
	int v=0;
	return v;
}
 
int& w = foo();  // ne compile pas
Il ne compile pas car on ne peux pas stocker dans une ref la valeur de retour d'une fonction qui est une variable temporaire.
Donc pour l'instant tout est OK.

Cependant, si je remplace le int par un vector, ca marche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
vector<int> foo()
{
	vector<int> v;
	return v;
}
 
vector<int>& w = foo();  // compile OK mais pourquoi ?
Et en fait, je devrais la aussi avoir un pb de compile, et pourtant ca passe.
Quelqu'un pourrait m'expliquer ?