C ++: безопасно ли из wchar_t * без знака *?
Поскольку я использую SAXReader MSXML2, мне нужно передать unsigned short * некоторые из его методов. Значения, которые мне нужно передать, это wchar_t, так что это безопасно сделать?
В общем, актерский состав небезопасен, так как строгое наложение правила запрещают это.
Но вы бы сойти с рук, если wchar_t
это typedef
за unsigned short
, Если это так, вы можете применить это во время компиляции, используя static_assert
на основе стоимости
std::is_same<whar_t, unsigned short>::value
Обратите внимание далее, что такая реализация полагается на то, что ваш компилятор не реализует стандарт правильно: Формально wchar_t
имеет тот же размер, подпись и выравнивание, что и один из целочисленных типов, но это отдельный тип «. Поэтому typedef
не будет соответствовать, и утверждение значения должно всегда терпеть неудачу.
Других решений пока нет …