I just tried it undef GNU C++, GNU C and Solaris C++. Duff's device works fine under all of them.

(NOTE: I had to change "register n" to "register int n" for it to work in C++).