casting — C ++: безопасно ли приводить из wchar_t * к unsigned short *?

C ++: безопасно ли из wchar_t * без знака *?

Поскольку я использую SAXReader MSXML2, мне нужно передать unsigned short * некоторые из его методов. Значения, которые мне нужно передать, это wchar_t, так что это безопасно сделать?

0

Решение

В общем, актерский состав небезопасен, так как строгое наложение правила запрещают это.

Но вы бы сойти с рук, если wchar_t это typedef за unsigned short, Если это так, вы можете применить это во время компиляции, используя static_assertна основе стоимости

std::is_same<whar_t, unsigned short>::value

Обратите внимание далее, что такая реализация полагается на то, что ваш компилятор не реализует стандарт правильно: Формально wchar_t имеет тот же размер, подпись и выравнивание, что и один из целочисленных типов, но это отдельный тип «. Поэтому typedef не будет соответствовать, и утверждение значения должно всегда терпеть неудачу.

Ссылка: http://en.cppreference.com/w/cpp/language/types

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]