C ++:从wchar_t *转换为unsigned short *是否安全?
因为我使用的是MSXML2的SAXReader,所以我需要传递unsigned short *的一些方法。我需要传递的值是wchar_t,所以这样做是否安全?
一般来说,强制转换是不安全的,因为严格的别名规则禁止它。
但如果wchar_t
是typedef
的unsigned short
,你就会侥幸逃脱。如果是,你可以在编译时使用static_assert
强制执行,基于值
std::is_same<whar_t, unsigned short>::value
请注意,这样的实现依赖于您的编译器没有正确实现标准:正式wchar_t
具有相同的大小,签名和对齐作为整数类型之一,但是是一种不同的类型。“因此,typedef
将不符合要求并且值断言应该总是失败。