Moveconstructor wird nicht aufgerufen... Warum?
-
Hallo,
kann mir vielleicht kurz jemand erklären, warum im nachfolgenden Code der Moveconstructor nicht(!!) aufgerufen wird? Wenn ich den Moveconstructor nicht hinschreibe, lässt sich das Programm auch nicht compilieren...
Env: FreeBSD 10.1/clang/C++11
#include <iostream> #include <string> using namespace std; class Handle { public: int get_member() const { return member_; } Handle(Handle&& rhr) : member_(rhr.member_) { cout << "Move..." << endl; // Wird niemals aufgerufen! } ~Handle() { cout << "Destrukt: " << member_ << endl; } private: Handle() = delete; Handle(const Handle&) = delete; Handle(Handle&&) = delete; void operator=(const Handle&) = delete; void operator=(Handle&&) = delete; Handle(int member) : member_(member) {} public: static Handle create(int params); private: int member_; }; Handle Handle::create(int params) { return Handle(params); } int main() { Handle h = Handle::create(42); cout << h.get_member() << endl; }
Danke schonmal für eure Hilfe!
-
-
Perfekt! Danke!