TL; DR: существует ли реализация класса интеллектуальных указателей, аналогичного std::unique_ptr
, который создает экземпляр инкапсулированного объекта только в том случае, когда указатель впервые разыменовывается?
Фон:
У нас есть класс Process
, представляющий запущенный процесс. Когда процесс выполняет сетевое взаимодействие, мы записываем это действие и сохраняем его в объекте класса NetworkActivity
, который является членом класса Process
.
NetworkActivity
- это большой класс со многими переменными-членами. Я пытаюсь уменьшить использование памяти и создавать экземпляры NetworkActivity
объектов только для небольшого подмножества процессов, которые фактически обмениваются данными по сети.
Я мог бы, конечно, использовать unique_ptr
в Process
класс:
std::unique_ptr<NetworkActivity> networkActivityPtr;
Но тогда мне нужно будет проверять networkActivityPtr
на nullptr
каждый раз, когда я разыменую его. Если я забуду такую проверку и память еще не будет выделена, программа вылетит.
Нет ли варианта unique_ptr
, который создает объект при первом разыменовании умного указателя?