C ++ 17 кратное выражение в cout

Я изучаю новое c ++ 17-кратное выражение, и я видел этот код из c ++ 17 кратное выражение. Я хотел бы знать, почему этот код работает:

template<typename ...Args>
void printer(Args&&... args) {
(std::cout << ... << args) << '\n';
}

но не этот

template<typename ...Args>
void printer(Args&&... args) {
(std::cout << args << ...) << '\n';
}

что может показаться логичным, и, на мой взгляд, поменять порядок печати.

3

Решение

Как видно на cppreference, бинарные складки могут иметь следующие две формы:

Скриншот из cppreference / fold

куда E это выражение пакета а также I это выражение инициализации.


Там нет бинарной складки, которая соответствует вашему (std::cout << args << ...), который имеет форму (I op E op ...),

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]