Mallocator
Erik Smith via Digitalmars-d
digitalmars-d at puremagic.com
Thu Mar 3 12:16:55 PST 2016
On Thursday, 3 March 2016 at 19:32:40 UTC, Brian Schott wrote:
> On Thursday, 3 March 2016 at 19:01:52 UTC, Erik Smith wrote:
>> I get the error "allocate is not callable using a non-shared
>> object" and I'm not sure how to resolve it.
>
> Are you calling `Mallocator.allocate()` or
> `Mallocator.instance.allocate()`?
The later works and qualifying the allocator member variable
shared seems to solve the issue. Example:
struct A(T) {
alias Allocator = T;
shared Allocator allocator;
this(string url="") {
allocator = Allocator();
void *p1 = cast(void*)(allocator.allocate(1024));
//void p2[] = allocator.allocate(1024); // ICE
}
}
A!Mallocator a;
However, this seems bad because it assumes that all allocators
are shared. It appears, however that the qualifier can be
attached to the type so maybe there is some meta-programming
tricks that can be used:
alias Allocator = shared T;
I'm not sure if I'm on the right track. Note also the ICE in the
example above.
erik
More information about the Digitalmars-d
mailing list