У меня есть структура, содержащая несколько членов.
эти члены должны быть построены с использованием другого члена.
Действителен ли доступ к этому другому члену для инициализации членов или я вызываю UB таким образом?
struct Data {
int b;
};
struct Bar {
Bar(Data& d): a(d.b){
}
int a;
};
struct Foo {
Data data;
Bar b;
};
int main() {
Foo f {.data = Data(), .b = Bar(f.data)}; // b is constructed using f.data!
}
Члены инициализируются в том порядке, в котором они объявлены в struct
/class
, и вы можете правильно ссылаться на другие члены во время инициализации, если они уже были инициализированы в этот момент.
Это выполняется независимо от того, как выполняется инициализация.
@Raildex Нет. Обновленный ответ.
имеет ли значение, использую ли я конструкторы или назначенные инициализаторы?