Je doute fort que les 2 itérateurs de std::find puissent être utiles au compilateur.
L'itérateur est un concept de haut niveau qui est probablement inconnu du compilateur. Il faut bien différencier les règles définies dans les APIs et celles définies dans le langage lui même (et la lib std de c++ est une api). Le compilateur C++ n'a normalement aucune idée de la sémantique associée aux std::iterator, std::string, std::vector, etc. Il ne voit que des classes et ne peux faire aucune hypothèse sur la sémantique. Si demain, je renomme tout les 'iterator' en 'foobar' cela devrait fonctionner pareil.
C'est différent dans d'autre langages tels que Fortran où de nombreuses fonctions sont intrinsèques au langage et ont donc une sémantique connue du compilateur.
Cela ne signifie pas que le compilateur C++ ne peut jamais exploiter ce genre d'information. En général, il faut que le programmeur fournisse l'information explicitement, par exemple, sous la forme d'un pragma ou d'un attribut.
[^] # Re: Vectorisation illégale
Posté par SChauveau . En réponse au journal Recherche de valeur dans un tableau et l'écosystème des compilateurs C++. Évalué à 3.
Je doute fort que les 2 itérateurs de
std::findpuissent être utiles au compilateur.L'itérateur est un concept de haut niveau qui est probablement inconnu du compilateur. Il faut bien différencier les règles définies dans les APIs et celles définies dans le langage lui même (et la lib std de c++ est une api). Le compilateur C++ n'a normalement aucune idée de la sémantique associée aux
std::iterator,std::string,std::vector, etc. Il ne voit que des classes et ne peux faire aucune hypothèse sur la sémantique. Si demain, je renomme tout les 'iterator' en 'foobar' cela devrait fonctionner pareil.C'est différent dans d'autre langages tels que Fortran où de nombreuses fonctions sont intrinsèques au langage et ont donc une sémantique connue du compilateur.
Cela ne signifie pas que le compilateur C++ ne peut jamais exploiter ce genre d'information. En général, il faut que le programmeur fournisse l'information explicitement, par exemple, sous la forme d'un pragma ou d'un attribut.