Niby się da.. ale radziłbym znaleźć inne rozwiązanie (tak przerobić, żebys nie musiał go wołać).
W tym konkretnym przypadku uruchomiony zostanie konstruktor przenoszący, więc musiałbyś sobie go jawnie zdefiniować (C++ niejawnie definiuje go za ciebie jeśli jest to możliwe) i użyć delegowania konstruktorów, żeby zawołać domyślny kontruktor (zostanie wykonany przed).
class Stonewt {
public:
Stonewt(Stonewt&& other) : Stonewt() // tutaj wolany jest kontruktor domyslny; wykonywany jest przed kodem tego konstruktora
{
// tutaj przekopiowujesz wszystkie membery obiektu other do obiektu na ktorym wykonuje sie konstruktor
// lub przenosisz zgodnie z semantyką przenoszenia
}
};
Jeśli jednak kod wygladalby w ten sposob:
Stonewt zy = z + y;
Stonewt x = zy;
To uruchomiony zostanie konstruktor kopiujący (tj. Stonewt(const Stonewt&)) i musisz też z nim postąpić podobnie...
Wg mnie: brzydkie i szkoda zachodu