On 11/05/2018 2:33 AM, Yuxuan Shui wrote:
On Thursday, 10 May 2018 at 14:28:39 UTC, JN wrote:
On Thursday, 10 May 2018 at 14:15:18 UTC, Yuxuan Shui wrote:
[...]
For things like this you can use the OOP Factory pattern, pseudocode:
class DataStructureFactory
{
this(Allocator alloc)
{
this.alloc = alloc;
}
Allocator alloc;
DataStructure createDataStructure(...)
{
return new DataStructure(..., alloc)
}
}
DataStructureFactory factory = new DataStructureFactory(new
SomeAllocator())
auto data1 = factory.createDataStructure(...)
auto data2 = factory.createDataStructure(...)
auto data3 = factory.createDataStructure(...)
But doing it with default argument expansion saves you 1 allocation, has
1 less type, while being just as readable. I think that's a win.
class -> struct, now it is back to 1 allocation.