C ++:从 wchar_t *转换为unsigned short * 是否安全?
因为我使用的是MSXML2的SAXReader,所以我需要传递unsigned short *的一些方法。我需要传递的值是wchar_t,所以这样做是否安全?
答案 0 :(得分:4)
一般情况下,强制转换是不安全的,因为严格别名规则禁止它。
但如果wchar_t
为typedef
unsigned short
,那么你就可以侥幸成功。如果是,您可以在编译时使用static_assert
强制执行该操作,具体取决于
std::is_same<whar_t, unsigned short>::value
进一步注意,这样的实现依赖于您的编译器没有正确实现标准:正式wchar_t
具有与整数类型之一相同的大小,符号和对齐,但是是一种不同的类型。“因此,typedef
不符合规定,值断言应始终失败。