在我的系统上, wchar_t 和 int 是具有相同属性的不同类型:
#include <type_traits>
sizeof(wchar_t) == sizeof(int) == 4
std::is_signed<wchar_t> == std::is_signed<int> == std::true_type
std::is_same<wchar_t, int> == std::false_type
相反,ptrdiff_t
andlong int
是相同的类型(相同的属性,并且is_same
为真)。
这种独特性是否wchar_t
得到保证?在所有系统上wchar_t
过载是否安全?int
除了 int 之外,是否有任何属性可以区分wchar_t
和相应的 int 属性is_same
?
(系统信息:我对一般情况感兴趣,但到目前为止我的测试是在运行 g++ 4.8.0 和 Apple clang++ 4.1 的 OS X 机器上进行的,两者都使用 -std=c++11。)