Ne pas confondre "sera ou ne sera jamais modifier une variable" pour "a un chemin d'exécution qui modifie une variable."
Le premier est appelé opaque prédicat de détermination, et il est carrément impossible de décider - en dehors de réduction à partir du problème de l'arrêt, vous pouvez simplement pointer la variable peut provenir d'une source inconnue (eg. l'utilisateur). Cela est vrai de toutes les langues, et pas seulement en C++.
La dernière déclaration, cependant, peut être déterminé en regardant l'arbre d'analyse, ce qui est quelque chose que tout optimiser les compilateurs n'. La raison n'est que pure fonctions (et referentially transparent fonctions, pour une définition de referentially transparent) ont toutes sortes de nice optimisations qui peuvent être appliquées, comme être facilement inlinable ou ayant leurs valeurs sont déterminées au moment de la compilation; mais de savoir si une fonction est pure, nous avons besoin de savoir si il peut toujours modifier une variable.
Donc, ce qui semble être une déclaration surprenante sur le C++ est en fait une simple déclaration au sujet de toutes les langues.