Comment fonctionne la bibliothèque standard de mettre en œuvre des std::swap?

Quelle est la fonction d'échange de la mise en œuvre de la STL? Est-il aussi simple que cela:

template<typename T> void swap(T& t1, T& t2) {
    T tmp(t1);
    t1=t2;
    t2=tmp;
}

Dans d'autres postes, ils parlent spécialisé cette fonction pour votre propre classe. Pourquoi aurais-je besoin de faire cela? Pourquoi ne puis-je pas utiliser le std::swap fonction?

  • C'est exactement comment std::swap a été implémenté en C++03, en C++11, il est T tmp(std::move(t1)); t1 = std::move(t2); t2 = std::move(tmp); que ce sera plus efficace que de copier pour certains types.
  • Il n'existe pas de "la bibliothèque standard". Il y a un tas d'implémentations, choisissez-en un ou quelques-uns et le regarder.
  • Chacune de ces implémentations met en œuvre "Le C++ standard Library" (voir §17.1/1
  • Il est, cependant, pas "le TSL". La Bibliothèque Standard n'est pas la STL.
  • Il est totalement "le TSL". C'est une bibliothèque C++ écrit par SGI, qui a ressemblance frappante avec la norme C++ de la bibliothèque. sgi.com/tech/stl/table_of_contents.html