Clang は、標準以外のさまざまな方法std::numeric_limits<size_t>::max()
で自分のallocator::max_size()
式のサイズは 4 バイトに制限されているように見えるため、impl で定義されたマルチバイト char のように見えますが、正確にどのように機能するかはわかりません。
printf("0x%016hhX\n", '\377'); // 0x00000000000000FF
printf("0x%016X \n", '\3777'); // 0x000000000000FF37
printf("0x%016X \n", '\37777'); // 0x0000000000FF3737
printf("0x%016X \n", '\377777'); // 0x00000000FF373737 [-Wfour-char-constants]
printf("0x%016X \n", '\3777777'); // 0x0000000037373737 [ too long ]
printf("0x%016X \n", '\3777777'); // 0x0000000037373737 [ too long ]
2 ~ 4 行目はすべて int を返すように見えますが、4 行目だけが-Wfour-char-constants
if turn on を警告し-Weveryting
ます。4 バイト char でユーザーに警告する必要があるのはなぜですか?
それがどのように機能するか説明してください。口語的またはおそらく規範的な用語はありますか?