Если у меня есть следующие две петли:
std::vector<int> v;
for(auto i : v)
//do something with i
for(auto& j : v)
//do something with j
Когда я наводил курсор на i
, intellisense показывает его как int i
(как и ожидалось). Однако, когда я нахожусь над j
, я не получаю int&
, как я ожидал, но скорее
std::_Simple_types<std::_Wrap_alloc<std::_Vec_base_types<int, std::allocator<int> >::_Alloc>::value_type>::value_type &j
Что это за сложное определение? Это то же самое, что int&
? Если нет, то что это? И если это так, почему он может вывести только int
для i
, но не int&
для j
?