Я использую Visual Studio 2010 и следующий код смутил меня немного:make_signed <unsigned long> :: type is int?
#include<type_traits>
auto x = std::make_signed<unsigned long>::type();
х будет иметь тип Int, но я ожидал бы долго. Я знаю, что int и long в VS10 являются 4-байтовыми целыми числами. Но даже если подписанный long вписывается в int, int для меня не является знаком целочисленного типа, соответствующего unsigned long. Поэтому мой вопрос: это ошибка/техническая неточность или технические характеристики стандарта позволяют этот результат?
Я получаю 'long' на GCC 4.9.0, FWIW. –
На моем VS2013 Express я также получаю 'long'. – DaBrain
С VS2012, также 'long'. –