En gros, voici ce que mon code ressemble à:"auto" devenir le mauvais type?
vector<int> myVec; // defined elsewhere, and has stuff in it.
auto it = lower_bound(myVec.front(), myVec.back(), key);
myVec.insert(it, key); // <- compiler error!
L'erreur du compilateur est error: no matching function for call to 'std::vector<int>::insert(int&, int&)'
, ce qui est inattendu, car il est censé être un « something_something_iterator
».
Pourquoi est-ce que c'est ça?
Je compile avec MinGW-W64 sur Windows 7.
Quelle a été l'erreur complète du compilateur? Pourquoi penses-tu que le compilateur pense que c'est un 'int &'? –
'std :: vector :: front/back' renvoie une référence ou const_reference .. vous voulez probablement utiliser' std :: vector :: begin/end' – KoKuToru
Votre compilateur est configuré pour utiliser le mode C++ 11 ('- std = C++ 11', je suppose, sur la ligne de commande)? Sinon, il pourrait interpréter 'auto' comme le spécificateur de classe de stockage, en ajoutant le' int' implicite. –