#include<iostream>
using namespace std;
template<typename ...Args>
void output_argus(Args&&... args)
{
((cout << args << '\n'), ...); // #1
(... , (cout << args << '\n')); // #2
}
int main()
{
output_argus(1, "test", 5.6f);
}
Основанный на c++ оператор doc, ','
является оператором слева направо. Это означает a, b, c, d
означающее (((a, b), c),d)
не (a, (b, (c, d)))
. Это важно, если a, b, c, d являются утверждениями.
Однако, основываясь на выражении doc для ','
которое должно использовать одинарную левую складку.
Мой вопрос, почему оба утверждения в моем коде работают? Разве не должен работать только № 2? А также как понять ...
и args
. а вложенные выражения складываются?