In addition to my letter I wrote some test code following the
message. I found out that I can use copy constructor signature:
this(immutable(this)), to get a mutable copy of immutable struct.
But this is not working with this(const(this)). My thoughts were
that if I would define some method parameter as const so it will
accept both mutable and immutable arguments. Is there some
exceptional situation that it's not true for copy constructors or
is it a bug or is it my misunderstanding of this question?
//-------------------
import std.stdio;
struct A
{
this(string some) immutable
{ _some = some; }
//this(immutable(A) a)
//{ _some = a._some; }
this(immutable(this)) {} //This is working with immutable
//this(const(this)) {} //But this is not working with immutable
void printSome() { writeln(_some); }
private string _some;
}
class B
{ this(A a)
{ _a = a; }
private A _a;
void printA() { _a.printSome(); }
}
immutable(A) globalA = immutable(A)("Global");
void main()
{
//B b = new B( A(globalA) );
B b = new B( globalA ); //immutable globalA copying into mutable
b.printA();
}
//--------------
Also available at: http://dpaste.dzfl.pl/3c89185e