Я использую C++ в основном режиме с Visual Studio 2017. Этот компилятор компилирует выражение ниже без жалобы:
const char * AnArrayOfStrings[] = {"z1y2x3w4", "Aname"};
Однако, если я изменил вышеприведенный оператор, чтобы указать, что char подписан или неподписан, компилятор испускает ошибку C2440. Например, приведенные ниже утверждения не компилируются:
const signed char * AnArrayOfStrings2[] = {"z1y2x3w4", "Aname"};
const unsigned char * AnArrayOfStrings2[] = {"z1y2x3w4", "Aname"};
Я не вижу причины, по которой компилятор отказывается компилировать инструкцию, когда знак char становится явным.
Мой вопрос: есть ли веская причина, по которой я не видел, чтобы компилятор отказался компилировать эти утверждения?
Спасибо за вашу помощь (я проводил исследования в StackOverflow, документации C++, я использовал Google и консультировался о десятках книг C/C++, пытаясь найти ответ сам, но причина по-прежнему не ускользает от меня).