Lors de l'utilisation du spécificateur automatique pour créer une variable qui est initialisée avec la valeur de retour de vector<bool>::back()
, la variable possède un qualificatif de référence.Spécificateur auto VC++ prenant le qualificatif de référence pour le vecteur <bool> :: retour
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.
}
La variable k a bool
comme son type, mais la variable l a le type std::_Vb_reference<std::vector< bool, std::allocator<bool>>::_Alty >
Si j'utilise int au lieu de bool, spécificateur automatique fonctionne pour vecteur aussi bien.
Est-ce un bug dans VC++? J'utilise Microsoft Visual C++ 2013.
'std :: vecteur < bool >' n'est pas un conteneur – Danh