You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Предположим, у нас есть структура B, которая содержит поле типа A:
structA { int x; int y; };
structB {
A a;
int z;
}
Сейчас, если я хочу использовать designated initialization для объекта типа B, мне нужно расписать поле a отдельно:
B b = B{
.a = A{
.x = 123
},
.z = 3
}
Из-за этого появляется некоторая лишня вложенность.
Предлагается поддержать C-style подход. где в designated initialization можно использовать вложенные поля:
B b = B{
.a.x = 123,
.z = 3
}
Подразумевается, что код выше является синтаксическим сахаром для работающего варианта. Все незадействованные поля заполняются аналогично текущей реализации с zero initialisation.
Где может быть полезно
В небезызвестном фреймворке userver (по крайней мере внутри) при собирании реквеста для похода в эндпоинт другого сервиса часто приходится делать что-то такое:
Если поле - композиция, то странно, что там только один элемент композиции инициализируется. Скорей всего это значит что у нас какой-то частный случай. Чаще требуется инициализировать несколько полей структуры и синтаксис с фигурными скобками не является избыточным в таком случае:
Предложение
Предположим, у нас есть структура
B
, которая содержит поле типаA
:Сейчас, если я хочу использовать designated initialization для объекта типа
B
, мне нужно расписать полеa
отдельно:Из-за этого появляется некоторая лишня вложенность.
Предлагается поддержать C-style подход. где в designated initialization можно использовать вложенные поля:
Подразумевается, что код выше является синтаксическим сахаром для работающего варианта. Все незадействованные поля заполняются аналогично текущей реализации с zero initialisation.
Где может быть полезно
В небезызвестном фреймворке userver (по крайней мере внутри) при собирании реквеста для похода в эндпоинт другого сервиса часто приходится делать что-то такое:
или такого:
Хотя можно обойтись таким:
The text was updated successfully, but these errors were encountered: