21

Re: Що виведе програма?

ur_naz написав:
wander написав:
ur_naz написав:

спочатку інт потім флоат.

*BRAVO*
Що ж, справді, вивід буде

Прихований текст
int
float
ur_naz написав:

компілятор с++  обчислює аргументи зправа наліво

Але не через це. Почнімо з того, що компілятор С++ може передавати (не обчислювати, коли обчислює це зовсім інше, це вже order of evaluation) аргументи в функцію, як зправа наліво, так і зліва направо (це implementation-defined), а також, в цьому випадку це немає ніякого значення. Якщо ви про Fold Expression, то він завжди зліва направо. Це ж елементарні речі.

Єдиний компілятор на рекстестері, який не фейлить при компіляції цього - g++, інші кажуть, що не можуть кастовать int

Не знаю, що саме ви тестили, але у мене gcc i clang все виводять вірно, лиш студійний компайлер фейлиться, але це не дивно (враховуючи яка там версія).
Так на всякий

void g(auto&&... // << не стандартне розширення, яке стандартизоване лише в С++20, на рекстестері підтримується максимум C++14

Аналог мого коду для С++14:

#include <stdio.h>
void f(float&&) { puts("float"); }
void f(int&&) { puts("int"); }

template <typename... Args> 
void g(Args&&... v) { (f(v), ...); }

int main() { g(1.0f, 2); }
Подякували: Arete, leofun012