Ce qui est totalement inutile et redondant. La raison pour laquelle on utilise systématiquement operator[] en C++ et pas la méthode at(), c'est justement pour profiter du gain de vitesse d'un UB. Bien sur, dans cet exemple, un analyseur statique pourrais arriver à garantir que l'utilisation de operator[] ne peux pas lever de UB, mais dans un cas plus complexe, ce n'est pas forcément garantit.
[^] # Re: Existe-t-il des compilateurs C/C++ qui donnent une sémantique à tous les programmes ?
Posté par robin . En réponse au journal Compilateur trop intelligent. Évalué à 5.
Le problème c'est que tu ne sacrifie pas "un peu" mais "énormément" en perf. Par exemple, un simple
Deviendrait:
Ce qui est totalement inutile et redondant. La raison pour laquelle on utilise systématiquement
operator[]en C++ et pas la méthodeat(), c'est justement pour profiter du gain de vitesse d'un UB. Bien sur, dans cet exemple, un analyseur statique pourrais arriver à garantir que l'utilisation deoperator[]ne peux pas lever de UB, mais dans un cas plus complexe, ce n'est pas forcément garantit.bépo powered