(In reply to Maik Klein from comment #0)
> I opened a stack overflow question which contains all the needed details
>
> http://stackoverflow.com/questions/37868594/disposing-a-class-with-an-
> interface?lq=1
There a dispose overload that works with interface. It's available because you can retrieve the object that implements the interface using "cast(Object) itf".
So to me the report is invalid:
uint a;
interface Bar{}
class Foo: Bar
{
~this(){a = 1;}
}
void main()
{
import std.experimental.allocator.mallocator;
import std.experimental.allocator;
auto f = Mallocator.instance.make!Foo();
Bar b = f;
Mallocator.instance.dispose(b);
assert(a == 1);
}
I think that on S.O you ignore what is done here
https://github.com/dlang/phobos/blob/master/std/experimental/allocator/package.d#L1135
This is basically what allows to destroy an object from its interface.
Comment #2 by maikklein — 2016-06-17T14:08:18Z
Okay I found the bug. It was using emsi_container as a dependency, even though I did not use it.
It seems to have a dependency on std.experimental.allocator version 2.70, which then somehow overshadowed the current version of std.experimental.allocator.
And the bug that I am reporting still existed in 2.70 but seems to be fixed in 2.71.
So I guess I maybe should report this as an dub issue?