Будут ли указатели в контейнере, проинициализированном пустым списком инициализации, всегда == nullptr?
Будут ли указатели в контейнере, проинициализированном пустым списком инициализации, всегда == nullptr или есть какие-то подводные камни? Могу я положиться на это в своём коде, когда хочу проверить что в данную ячейку еще не чего не было записано (во всех трёх случаях)?
class Foo;
Foo* arr1[100]{};
std::shared_ptr<Foo> arr2[100]{};
std::vector<std::shared_ptr<Foo>> vec{100};
if (arr1[50] == nullptr){
...
}
if (arr2[50] == nullptr){
...
}
if (vec[50] == nullptr){
...
}
Ответы (1 шт):
Автор решения: user7860670
→ Ссылка
В приведенном коде ничего не инициализируется списком инициализации. В первом случае выполняется агрегатная инициализация, заполняющая нулями. В остальных случаях каждый из 100 элементов будет инициализирован конструктором-по умолчанию. При этом везде действительно будут nullptr.