Трудно сказать наверняка, почему компилятор не выдает предупреждение. Они могут сделать это по любой причине, и должны делать это, когда код сомнителен. Однако ошибка будет неуместна, поскольку код технически верен.
В этом случае я предполагаю, что компилятор не выдает предупреждение, потому что компилятор использует Unicode wchar_t
и символ ISO-8859-1. Подмножество Unicode от U + 0000 до U + 00FF соответствует ISO 8859-1 символа 0-FF. Таким образом, каждый символ имеет то же числовое значение, что и соответствующий ему wchar_t. В результате wchar_t('a')==L'a'
.