Чи буде це працювати? Так.
Чи варто використовувати його? Ні.
Така мікрооптимізація має сенс, якщо:
ви подивилися на код, який створює компілятор для прямого способу цього (призначення та тимчасовий) і вирішили, що підхід XOR генерує швидший код
Ви профайлювали свою програму і виявили, що вартість прямого підходу переважає ясність коду (і, отже, заощадження на ремонтопридатності)
До першого моменту, якщо ви не зробили це вимірювання, вам слід довіряти компілятору. Коли семантика того, що ви намагаєтеся зробити, зрозуміла, компілятор може зробити чимало хитрощів, включаючи перестановку змінного доступу, щоб заміни взагалі не потрібні, або вбудовування будь-яких інструкцій на рівні машини забезпечить найшвидший swap для заданого типу даних. "Прийоми", такі як swap XOR, ускладнюють компілятору бачити, що ви намагаєтеся зробити, і, таким чином, робите менше можливостей застосовувати такі оптимізації.
До другого моменту, що ви отримуєте для додаткової складності? Навіть якщо ви швидше виміряли та знайшли підхід XOR, чи має це достатній вплив, щоб виправдати менш чіткий підхід? Звідки ти знаєш?
Нарешті, слід вивчити, чи існує стандартна функція swap для вашої платформи / мови - наприклад, STL C ++ забезпечує функцію заміни шаблонів, яка буде оптимізована для вашого компілятора / платформи.