Rupert Wood wrote:
Evan Jones wrote:
I have a function to swap any two pointers (assuming that
sizeof(void*) == sizeof(T*)). I would like to use it without
violating strict aliasing rules.
I don't know how to fight aliasing rules but as another approach you could template the function instead, i.e.
template<typename T> T* exchange(T** ptr, T* next);
exchange<int>(&a, &v2);
since you're using C++ here.
</begin rant>
What a fabulous idea for a programming language! Why not instantiate
code for every subtle variation of a type? Then, create a giant library
called STL for that very purpose. Watch your executables grow to
multiple megabytes in size guaranteeing they won't fit into the cache of
any processor. What better way to bring your quad-core processor to
its knees. All hail the grand design of C++!
Ah, thank you :-) I feel better now. That was cathartic.
</end rant>