Здравствуйте, sergii.p, Вы писали:
SP> передав ссылку и наперёд зная, что там va_arg?
И?
Это не запрещено и может быть использовано правильно (с gcc):
https://godbolt.org/z/0aolWi — никаких проблем. Если передаётся по ссылке, то и читается по ссылке, а если передаётся по значению (после удаления конструкторов), то и читается по значению.
SP>то есть получается gcc целенаправленно загнал себя в UB, передав ссылку и наперёд зная, что там va_arg? Как же тут говорить о правоте компилятора?
Нет. У gcc всё хорошо. Проблема в исходном коде автора темы.
Тут ситуация аналогична, например, коду
printf("%s", 42);. В чём тут винить компилятор?