Yes, there is only function argument which is the result of the comma operator.
On Thu, Feb 4, 2021 at 2:46 PM AJ D <aats...@gmail.com> wrote: > Nope, -std=c++17 didn’t help either. > > On Thu, Feb 4, 2021 at 1:33 PM David Brown <david.br...@hesbynett.no> > wrote: > >> >> >> On 04/02/2021 22:21, Andreas Schwab wrote: >> > On Feb 04 2021, David Brown wrote: >> > >> >> For the built-in comma operator, you get guaranteed order of evaluation >> >> (or more precisely, guaranteed order of visible side-effects). But for >> >> a user-defined comma operator, you do not - until C++17, which has >> >> guaranteed evaluation ordering in some circumstances. >> > >> > But not the evaluation order of function arguments. See >> > <https://en.cppreference.com/w/cpp/language/eval_order> >> Sequenced-before >> > rules, rule 15. >> >> Correct. >> >> > >> >> Try your test again with "-std=c++17" or "-std=g++17" - if the order is >> >> still reversed, it's a gcc bug (AFAICS). >> > >> > I don't think so. >> > >> >> Unless I am missing something, in the OP's program it is a user-defined >> comma operator that is called. There is only one argument to the >> "test_comma_operator" function, the result of that user-defined comma >> operator. So rule 15 above does not apply - rule 16 applies. >> >> At least that is /my/ reading of the cppreference page and the OP's >> program. >> >> David >> >>