The section of standard code that you specify (Β§16.8. Predefined macro names [cpp.predefined]) prefixes of a series of definitions:
ΒΆ2 The following macros are conditionally determined by the implementation:
This means that if the implementation cannot satisfy the requirements (for example, since wchar_t is a 16-bit type), the implementation will not define __STDC_ISO_10646__ .
On the other hand, if wchar_t is a 32-bit or larger type, then the implementation may be able to define a macro. ISO 10646 requires only 21 bits to represent all characters, but for almost all practical purposes, this means that the 16-bit wchar_t too small and the 32-bit wchar_t is large enough. It also means that implementing from scratch can turn wchar_t into a 32-bit type. Pre-existing implementations can be skewed by backward compatibility if they selected 16-bit wchar_t before this option was standardized.
source share