Pourquoi ne pas std::queue::pop valeur de retour.?

Je suis allé à travers ce page mais je ne suis pas en mesure d'obtenir la raison pour la même chose . Là, il est mentionné que

"il est plus judicieux pour elle de retourner aucune valeur à tous et à exiger
les clients à utiliser avant() pour inspecter la valeur à l'avant de la file d'attente"

Mais d'inspecter un élément de l'avant() est également nécessaire que l'élément à copier dans lvalue. Par exemple, dans ce segment de code

std::queue<int> myqueue;
int myint;
int result;
std::cin >> myint;
myqueue.push (myint);

/* ici temporaires seront créés sur les RHS qui sera affectée à résultat, et dans le cas
si les rendements par référence alors le résultat sera invalidée après pop opération */

result = myqueue.front();  //result.
std::cout << ' ' << result;
myqueue.pop();

sur la cinquième ligne cout objet crée d'abord une copie de myqueue.avant() attribue alors que le résultat. Alors, quelle est la différence, de la pop de la fonction aurait pu faire la même chose.

Car est mis en œuvre cette manière (c'est à dire, void std::queue::pop();).
La question a été posée, mais comme une note: si vous voulez vraiment une pop qui renvoie, elle peut être facilement mise en œuvre avec un libre de la fonction: ideone.com/lnUzf6
Votre lien est à la STL de la documentation. Mais vous vous posez sur le C++ de la bibliothèque standard. Des choses différentes.
"Mais d'inspecter un élément de front() aussi nécessaire que l'élément à copier dans lvalue" - non, il ne le fait pas. front renvoie une référence, pas une valeur. Vous pouvez inspecter la valeur qu'elle renvoie sans le copier.
le modèle que vous décrivez exige une copie. Peut-être. Si vous voulez multiplex de la consommation de la file d'attente, alors oui, vous devez faire une copie avant de relâcher le verrou sur la file d'attente. Toutefois, si vous ne se soucient que de séparer l'entrée et la sortie, alors vous n'avez pas un verrou pour inspecter l'avant. Vous pourriez vous attendre à verrou jusqu'à ce que vous êtes fait de les consommer et de besoin d'appeler pop(). Si vous utilisez std::queue<T, std::list<T>> alors il n'y a aucune inquiétude à propos de la référence fournie à partir de front() être invalidées par une push(). Mais vous devez vous votre modèle d'utilisation et doit documenter vos contraintes.

OriginalL'auteur cbinder | 2014-07-30