The thing is, it just looks like an assignment, but really, this line:
Is not an assignment, it's initialization. The above line is equivalent toCode:Derived dT = d.transpose();
This is the proper behavior, and is not dependent on your compiler.Code:Derived dT(d.transpose9));
Try the following:
Code:int
main()
{
Derived d;
Derived dT = d.transpose();
dT = d.Transpose();
}