使用这种swap实现的最大威胁是什么?除了线程安全和差的优化.什么时候失败(反例)?
template<typename T> void swapViaMemory(T& left,T& right) { if(&left == &right) { return ; } unsigned int tSize = sizeof(T); unsigned char* lPtr = reinterpret_cast<unsigned char*>(&left); unsigned char* rPtr = reinterpret_cast<unsigned char*>(&right); for(unsigned int i = 0; i < tSize; ++i) { *(lPtr + i) ^= *(rPtr + i); *(rPtr + i) ^= *(lPtr + i); *(lPtr + i) ^= *(rPtr + i); } }