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
Run Code Online (Sandbox Code Playgroud)
还要注意,尽管这样的实现依赖于编译器没有正确地实现标准:形式上wchar_t与整数类型之一具有相同的大小,符号和对齐方式,但是是不同的类型。”因此,a typedef将不符合要求价值主张应该永远失败。
参考:http://en.cppreference.com/w/cpp/language/types
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |