如果我运行:
#include <type_traits>
#include <iostream>
int main()
{
std::cout << "sizeof(long) = " << sizeof(long) << "\n";
std::cout << "sizeof(long long) = " << sizeof(long long) << "\n";
std::cout << "std::is_same<long, long long>::value = "
<< std::boolalpha << std::is_same<long, long long>::value
<< "\n";
return 0;
}
在我的机器(和 Coliru)上,我得到:
sizeof(long) = 8
sizeof(long long) = 8
std::is_same<long, long long>::value = false
不仅如此std::is_same<>
;期望实例化int64_t
失败的翻译单元,因为我只为另一个翻译单元编译int
并long long int
在另一个翻译单元中编译,尽管这一切都发生在同一台机器上。
为什么这些类型不一样?我的意思是,表现出与typedef
's 相同类型的行为?