Patch by Ben Craig.
The standard only guarantees that unsigned int is >= 16 bit so IIUC in that case it can't be compared with char32_t here.
C++17 [basic.fundamental] => C99 18.104.22.168.1
I'm not a language lawyer, I had to look this one up. But AFAICT that's why unsigned int is insufficiently portable for this test.