Software Development, Software Performance.
“Do these five members really all have separate independently shareable lifetimes?” Probably one shared pointer for the whole class with five unique pointer members would have done the job. Simpler is almost always better. Things that can easily be generalized later should probably be generalized