~= call copy ctor?

Kenji Hara k.hara.pg at gmail.com
Sat Jul 21 13:11:07 PDT 2012


On Friday, 20 July 2012 at 16:02:18 UTC, Namespace wrote:
> If i @disable the postblit i get a strange behaviour:
>
> [code]
> struct Test {
> public:
> 	int _id;
>
> 	this(int i) {
> 		_id = i;
>
> 		writeln("CTOR");
> 	}
>
> 	@disable
> 	this(this);
>
> 	~this() {
> 		writeln("DTOR");
> 	}
> }
>
> void main() {
> 	Test[] _arr;
>
> 	_arr ~= Test(42);
>
> 	writeln(_arr[0]._id);
>
> 	writeln("end main");
> }
> [/code]
>
> prints:
>
> CTOR
> DTOR
> 42
> end main
>
> The DTor is called _before_ i write Test's id but i can still 
> print the correct id.
> Implicit Copy CTor? ;)

Array appending and struct postblit behavior is now broken.
I've suggested a pull request to fix these bugs.

https://github.com/D-Programming-Language/dmd/pull/1037

Bye.

Kenji Hara


More information about the Digitalmars-d-learn mailing list