J’apprends la nouvelle expression de pliage 17 ++ et j’ai vu ce code à partir de l’ expression de pliage 17 ++ . J’aimerais savoir pourquoi ce code fonctionne:
template void printer(Args&&... args) { (std::cout << ... << args) << '\n'; }
mais pas celui-ci:
template void printer(Args&&... args) { (std::cout << args << ...) << '\n'; }
ce qui pourrait sembler logique aussi et inverserait l’ordre d’impression à mon avis.
Comme on le voit sur cppreference , les plis binarys peuvent avoir les deux formes suivantes:
Où E
est l’ expression du pack et I
est l’ expression d’initialisation .
Il n’y a pas de pli binary correspondant à votre (std::cout << args << ...)
, qui a la forme de (I op E op ...)
.