При использовании автоматического спецификатора для создания переменной, которая инициализируется возвращаемым значением от vector<bool>::back()
, переменная имеет ссылочный классификатор.Спецификатор VC++ для определения вектора <bool> :: назад
int main()
{
bool b = true;
bool & j = b;
auto k = j;
k = false; // k is of int type. So, j and i are unaffected.
std::vector<bool> vec = { true };
auto l = vec.back();
vec.pop_back();
l = false; // I get a debug assertion here.
}
Переменная к имеет bool
, как это тип, но переменная л имеет тип std::_Vb_reference<std::vector< bool, std::allocator<bool>>::_Alty >
Если я использую Int вместо BOOL, авто спецификатор работает для вектора а.
Это ошибка в VC++? Я использую Microsoft Visual C++ 2013.
'std :: vector < bool >' не является контейнером – Danh