I am building some kind of factory method which returns a DerivedClass as a BaseClass in the following way:
BaseClass Factory()
{
return DerivedClass();
}
Am I right, that the move constructor of the BaseClass is used when I call that method:
BaseClass object = Factory();
Since I cannot make the move constructor of the BaseClass virtual, is there an other way to force the move constructor of the DerivedClass to be taken?
Edit1: additional information - I already thought about pointers. But the thing is, I want to export the factory function in a DLL and I wanted to make it as easy as possible for the user. Standard pointers could result in memory leaks and on the other hand not everybody is familiar with smart pointers.
Edit2: As I learnd the real question was: Does polymorphism also work with return by value?
And the answer is NO.