I actually agree with you in the other thread. The do...while(0) construct is nice in C when function-style macros are used, but in C++ you really shouldn't use it.
I still maintain that a class with all private members that just friends other classes (if it doesn't friend anything, it's useless anyway) should be converted as laserlight suggested.