Ok, so if a put a struct into an array, it will copied into the array. But then? How it is deleted?

For exmaple, i have this code:

[code]
import std.stdio;

struct Test {
public:
        static uint _counter;

        this(int i = 0) {
                writeln("Test CTor.");

                _counter++;
        }

        this(this) {
                writeln("Test Copy CTor");

                _counter++;
        }

        ~this() {
                writeln("Test DTor");

                if (_counter > 0) {
                        _counter--;
                }
        }
}

void main() {
        {
                Test[] _arr;

                void copy_save(Test t) {
                        _arr ~= t;
                }

                void by_ref_save(ref Test t) {
                        _arr ~= t;
                }

                Test t = 42;

                //copy_save(t);
                by_ref_save(t);

                writeln("end scope");
        }

        writefln("Counter: %d", Test._counter);
}
[/code]

_counter is still 1 but the scope is released. How is that possible? Even with _arr.clear(); at the end of the scope, _counter is still 1.
I see one CTor and one Copy CTor but only one DTor.

Reply via email to