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!


  • Mod



  • Perfekt! Danke!


Log in to reply