Extend the call site default argument expansion mechanism?
rikki cattermole
rikki at cattermole.co.nz
Thu May 10 14:37:00 UTC 2018
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.
More information about the Digitalmars-d
mailing list