I developed a simple object swap template. I simply do a binary swap of the class/structure contents. Yet I know that the developers of the STL libraries do not implement swaps in this way. Their implementation will make copies (via a copy constructor) and then use an assignment operator - "operator=()". The reason I want to do swaps in this manner is because of the obvious efficiencies. For instance, if I wanted to swap two branches of two very large tree structures, the copy and assignment operations become prohibative. My question is in what instances does the code below NOT work? template void ObjectSwap(_Ty &obj1, _Ty &obj2) { // Don't swap on the same object if (&obj1 != &obj2) { char tmp[sizeof(_Ty)]; // create a memory buffer size_t sz = sizeof(_Ty); memcpy((void *) tmp, (const void *) &obj1, sz); memcpy((void *) &obj1, (const void *) &obj2, sz); memcpy((void *) &obj2, (const void *) tmp, sz); } } Scott K
S
scottk IntelligentSolutions com
@scottk IntelligentSolutions com