1

私が実行した場合:

#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失敗のインスタンス化を期待している翻訳単位。intlong long int

これらのタイプが同じではないのはなぜですか? typedefつまり、あなたが同じタイプのから持っているような行動を示すということですか?

4

2 に答える 2