Bonjour

Voici une implémentation possible du std::swap que nous connaissons tous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
template<class T>
void swap(T & l, T & r)
{	T tmp = std::move(l);
	l = std::move(r);
	r = std::move(tmp);
}
Et voici le principe de sa généralisation à n paramètres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
template<class T>
void multiple_swap(T & v0, T & v1, ..., T & vn)
{	T tmp = std::move(v0);
	v0 = std::move(v1);
	v1 = ...;
	... = vn;
	vn = std::move(tmp);
}
Existe-t-il en standard ? (pas à ma connaissance)
Une idée d'implémentation généralisée ?
Pour certains algos il serait utile je pense, car pour l'instant il m'arrive d'appeler le swap standard en cascade, ce qui induit des copies évitables.

Merci