Предположим, что wc
это wchar_t
а также c
это char
,
1) Есть ли разница между этими двумя заданиями?
c = 'a';
wc = L'a';
2) Существует ли какое-либо правило, обеспечивающее равенство c
а также wc
для значений ASCII? Что именно означает wc == c
компилятору?
Нет — стандарт гарантирует, что и базовый набор символов выполнения, и базовый набор символов широкого выполнения будут содержать «a», но не гарантирует, что он будет иметь одинаковое значение в обоих.
§2.3 / 3 дает несколько ограничений (например, цифры должны быть последовательными), ни одно из которых не применимо здесь, и окончательный вариант: «Значения элементов наборов символов выполнения и наборов дополнительных элементов зависят от конкретной локали».
Таким образом, это не только не гарантируется, но, по крайней мере, теоретически, оно может даже измениться, когда / если вы измените локаль.
Других решений пока нет …