Y a-t-il des avocats en langues dans la maison?Problèmes avec const set &. Bogue du compilateur/STL ou utilisation non portable?
Le code suivant doit-il être compilé?
include <set>
bool fn(const std::set<int>& rSet)
{
if (rSet.find(42) != rSet.end()) return true;
return false;
}
Sur l'une des plates-formes (Sun Workshop), ceci n'est pas compilé. Il signale que la fonction find a renvoyé un itérateur et la fonction end qui a retourné un const_iterator et qu'il n'a pas d'opérateur de comparaison valide entre ces types.
Ce qui suit ne compile:
include <set>
bool fn(std::set<int>& rSet)
{
if (rSet.find(42) != rSet.end()) return true;
return false;
}
Pas une réponse à votre question. Mais il serait mieux écrit comme: return rSet.find (42)! = RSet.end(); –