C ++ 17 fois l’expression en cout

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:

    Capture d'écran de cppreference / fold

    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 ...) .