std.allocator needs your help
QAston
qaston at gmail.com
Mon Sep 23 00:25:55 PDT 2013
On Monday, 23 September 2013 at 04:19:34 UTC, Manu wrote:
> You've just described C++ verbatim.
> And you've previously agreed that C++'s approach totally
> failed. Can you
> explain how this is different from C++, and how it solves the
> issues that
> defeated that design?
>
> One possibility I'm keeping in mind is that of defining a
> dynamic interface
Once you have static allocator you can go dynamic easily:
interface DynamicAllocator // isAllocator==true
{
// whatever the interface is
}
struct StaticAllocator // isAllocator==true
{
}
struct Container(ALLOCATOR = DynamicAllocator) if
(isAllocator!ALLOCATOR)
{
this(ALLOCATOR a){}
}
class DynamicAllocatorWrapper(T) : DynamicAllocator if (is(T) ==
struct)
{
// wraps any static allocator to be callable using dynamic
interface
}
With that boilerplate you can easily create allocator agnostic
containers:
auto c = Container(new
DynamicAllocatorWrapper!(StaticAllocator)())
and you can create specialized version if you need speed very
much:
auto c = Container!(StaticAllocator)(StaticAllocator());
More information about the Digitalmars-d
mailing list