Nun soll es ja auch möglich sein, 2 Variablen ohne die Hilfsvariable tmp zu vertauschen.
Ist aber performance-mäßig und in der Verständlichkeit des Quellcodes unterlegen. Und funktioniert nur mit Datentypen, die sich verXORen bzw. addieren und subtrahieren lassen.
Die Version mit Hilfsvariable lässt sich als Template schreiben und funktioniert dann für jedes kopierbare Objekt. Das ist ein wichtiger Vorteil, für den man im praktischen Leben gerne ein paar Bytes temporären Speicher spendiert.