4 ms·
> It forces heap allocation though, which is bad. It does, and it can be, but in situations where it matters, the static create function typically returns a va
by imron 9y ago
> It forces heap allocation though, which is bad.
It does, and it can be, but in situations where it matters, the static create function typically returns a value from a preallocated pool of memory, so objects are all contiguous and cache friendly.
- gpderetta 9y agoEven when using a pool allocator, you still have unnecessary indirections which is expensive. One of the benefits of C++ is the ability of being able to allocate subobjects inline with the containing object or array. By forcing indirection, allocating subobjects requires navigating a potentially deeply nested tree.
- imron 9y agoThis is true, and like I said above, it's not a method I prefer to use, it's just something that is commonly seen in projects that disable exceptions in order to avoid 2 phase initialization. There are definitely things to be aware of before adopting such a pattern, or when trying to optimize code that uses it.