Open NN--- opened 2 years ago
В С++ это не работает по 2-м причинам:
Первый пункт, мне кажется, никто исправлять не захочет, это противоречит идеологии C++.
Второй пункт исправлять не нужно, у нас есть другой синтаксис для записи того же выражения -- вместо
(struct point) {.x=1, .y=1}
можно писать просто point {.x=1, .y=1}
.
Первый пункт не совсем верен. Мы ведь можем передать временный объект по ссылке на константу и взять адрес на объект в функции. При этом мы ещё можем поля объявить mutable и их менять.
По второй части согласен. Сегодня нет проблем создать объект структуры с инициализацией, кроме небольшого ограничения на порядок полей ;)
C99 поддерживает создание временного объекта непосредственно при передаче. Было бы хорошо иметь поддержку в C++.
https://en.cppreference.com/w/c/language/compound_literal