Apakah ini akan berhasil? Iya nih.
Jika Anda menggunakannya? Tidak.
Ini semacam mikro-optimasi akan masuk akal jika:
Anda telah melihat kode yang dihasilkan kompiler untuk cara langsung melakukan ini (penugasan dan sementara) dan memutuskan bahwa pendekatan XOR menghasilkan kode lebih cepat
Anda telah membuat profil aplikasi Anda, dan menemukan bahwa biaya pendekatan langsung lebih penting daripada kejelasan kode (dan menghasilkan penghematan dalam pemeliharaan)
Untuk poin pertama, kecuali jika Anda sudah melakukan pengukuran ini, Anda harus mempercayai compiler. Ketika semantik dari apa yang Anda coba lakukan sudah jelas, ada banyak trik yang dapat dilakukan oleh kompiler, termasuk mengatur ulang akses variabel sehingga swap tidak diperlukan sama sekali, atau sejalan dengan instruksi level mesin apa pun yang memberikan tercepat swap untuk tipe data yang diberikan. "Trik" seperti XOR swap mempersulit kompiler untuk melihat apa yang Anda coba lakukan, dan karenanya membuatnya kurang bisa menerapkan optimasi seperti itu.
Untuk poin kedua, apa yang Anda mendapatkan untuk kompleksitas menambahkan? Bahkan jika Anda telah mengukur dan menemukan pendekatan XOR lebih cepat, apakah ini memiliki dampak yang cukup untuk membenarkan pendekatan yang kurang jelas? Bagaimana Anda tahu?
Akhirnya, Anda harus melihat apakah ada fungsi swap standar untuk platform / bahasa Anda - C ++ STL, misalnya, menyediakan fungsi swap template yang akan cenderung sangat dioptimalkan untuk kompiler / platform Anda.