#ifndef SWAP_POD_H #define SWAP_POD_H //for swapping objects of the same concrete type where just swapping their bytes will work. will at least work on plain old data. #include // not used, but people who use this will want to bring std::swap in anyway #include template inline void swap_pod(T &a,T &b) { using namespace std; const unsigned s=sizeof(T); char tmp[s]; void *pt=(void*)tmp; void *pa=(void*)&a; void *pb=(void*)&b; memcpy(pt,pa,s); memcpy(pa,pb,s); memcpy(pb,pt,s); } #endif