vendredi 13 avril 2018

Enforcing move only semantics

I am relatively new to C++11, though I have used previous versions for many years. Is this the correct way to enforce that an object will only be movable?

class CResource
{
public:
    CResource();

    CResource(CResource &&);
    CResource & operator=(CResource &&);

private:
    CResource(const CResource &) = delete;
    CResource & operator=(const CResource &) = delete;

    void * m_pResource;
};

class CAcquireResource
{
public:
    CResource && AcquireResource();
};

CResource && CAcquireResource::AcquireResource()
{
    CResource res;
    return std::move(res);
}

Aucun commentaire:

Enregistrer un commentaire