私が実行した場合:
#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
つまり、あなたが同じタイプのから持っているような行動を示すということですか?