75 votes

Pourquoi std :: transform et similaires transforment-ils l'incrément de boucle 'pour' en (void)?

Quel est le but de (void) ++__result dans le code ci-dessous?

Implémentation pour std :: transform:

 // std::transform
template <class _InputIterator, class _OutputIterator, class _UnaryOperation>
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op)
{
    for (; __first != __last; ++__first, (void) ++__result)
        *__result = __op(*__first);
    return __result;
}
 

5voto

Abyx Points 4776

Il évite les appel de surchargée s’il y a lieu. Parce que le type ne peut pas être un argument d’une fonction (opérateur).

Une autre approche pourrait être mise en place `` dans le milieu :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X