Я пытался запустить этот код
// vector::size
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myints;
std::cout << "size: " << myints.size() << '\n';
std::cout << "size: " << myints.size()-1 << '\n';
return 0;
}
И Удивительно выход пришел
0
стоимость мусора
Должен быть
0
-1
Вот :код
cout
является реализацией, определенной для типовunsigned
определенного размера. Кажется, что теоретически стандарт допускает мусорное значение. - person Bathsheba   schedule 06.02.2018operator<<
иnum_put::do_put
,unsigned long long
с другими настройками по умолчанию будет выводиться так же, как вызовprintf("%ull", val)
, а также для других основных беззнаковых типов. Я не уверен, что у вас есть потенциальная проблема из-заsize_t
, учитывая, что это либо соответствует перегрузке, либо вызывает двусмысленность. - person chris   schedule 06.02.2018