Possible Duplicate:
How does the following code work?
#define TYPE_CHECK(T, S) \
while (false) { \
*(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
}
I found it tricky, how does it work? And why volatile?