L'ajout d'une constance supplémentaire provoque une erreur du compilateur

L'ajout d'une constance supplémentaire provoque une erreur du compilateur

Parce que renvoyer un const quelque chose par valeur comme ici ne fait aucune différence avec ou sans.

Par exemple :

const int GetMyInt()
{
  int k = 42;
  return k;
}

//later..
int ret = GetMyInt();
// modify ret.

Parce que la valeur renvoyée par GetMyInt sera copié dans ret de toute façon (sans tenir compte du (N)RVO), ayant GetMyInt renvoie const ne fait aucune différence.

Normalement c'est un avertissement car c'est du code superflu mais -Werror transforme chaque avertissement en erreur donc voilà.


Le const qualificateur n'a aucun effet dans cette position, car la valeur renvoyée est une prvalue de type non classe et ne peut donc pas être modifiée de toute façon.

Notez que le message du compilateur indique -Werror= , ce qui signifie qu'il s'agit normalement d'un avertissement (le code n'est donc pas erroné, mais digne d'avertissement). Il a été transformé en erreur par vos paramètres de compilation.