Re: Absence of isAllocator trait
On Monday, 6 September 2021 at 15:46:52 UTC, Paul Backus wrote: * `void allocate(size_t size)` Should be * `void[] allocate(size_t size)` Thanks. Here's what I have so far ```d enum isAllocator(T) = (is(typeof(T.allocate(size_t.init)) == void[]) && is(typeof(T.alignment) == uint)); ```
Re: Absence of isAllocator trait
On Monday, 6 September 2021 at 13:24:56 UTC, Basile B. wrote: It's because the clients of an allocator should rather statically check for specific traits of an allocator, there are too many possible permutations of capabilities possible, not all can allocate and deallocate, not all can reallocate, and so on. According to [the documentation][1], there are two required properties all allocators must have: * `uint alignment` * `void allocate(size_t size)` So it makes sense to have an `isAllocator` trait that checks for those, even if clients are expected to check for other properties individually. [1]: https://dlang.org/phobos/std_experimental_allocator_building_blocks.html
Re: Absence of isAllocator trait
On Saturday, 4 September 2021 at 19:43:27 UTC, Per Nordlöw wrote: Is there a reason for the absence of an `isAllocator` trait under `std.experimental.allocator`? I had ask a similar Q once and I've been told that (more or less): It's because the clients of an allocator should rather statically check for specific traits of an allocator, there are too many possible permutations of capabilities possible, not all can allocate and deallocate, not all can reallocate, and so on. actually I'm 100% sure that what you want is `isMallocator` and not `isAllocator` ;)
Absence of isAllocator trait
Is there a reason for the absence of an `isAllocator` trait under `std.experimental.allocator`?