Existe um 'ownership-in-a-package' apropriado para 'handles' disponíveis?

Alças tem semântica adequada diferente de ponteiros. Então, para mim, um exemplo como esse (extraído doRegra do zero):

class module {
public:
    explicit module(std::wstring const& name)
    : handle { ::LoadLibrary(name.c_str()), &::FreeLibrary } {}

    // other module related functions go here

private:
    using module_handle = std::unique_ptr<void, decltype(&::FreeLibrary)>;

    module_handle handle;
};

usandounique_ptr&nbsp;como um 'ownership-in-a-package' para handles é um mau exemplo. Primeiro, faz uso do conhecimento interno de que o handle é um tipo de ponteiro, e usa isso para fazer umunique_ptr&nbsp;para o tipo básico o tipo de identificador "opaco" é construído.

As alças podem ser de qualquer tipo, podem ser um ponteiro, podem ser um índice ou quem sabe. Mais importante ainda, o que você tem em mãos (da maioria das APIs C, por exemplo) é um identificador e sua função de liberação de recursos.

Existe uma 'propriedade-em-um-pacote' adequada quetrabalho&nbsp;na semântica de identificador? Quero dizer, já publicamente disponível para um usar?

Para mim,unique_ptr&nbsp;et. al. não funciona, devo fazer suposições desnecessárias sobre o tipo de alçaé, quando o que eu quero é apenas obter um 'ownership-in-a-package' através do tipo de identificador opaco e sua função de liberação, unicamente.

Não faz sentido que alguém entre no tipo de alça para fazer construções sobre essa informação. É uma alça, não importa.

Vou citar aqui os sentimentos de outro usuário SO emoutra pergunta responda:

Crie uma classe "ponteiro inteligente" específica, não demorará muito. Não abuse das aulas da biblioteca. A semântica do identificador é bem diferente da de um ponteiro C ++; por um lado, desreferenciar um HANDLE não faz sentido.

Mais um motivo para usar uma classe de identificador inteligente personalizada - NULL nem sempre significa um identificador vazio. Às vezes, é INVALID_HANDLE_VALUE, que não é o mesmo.

Aviso Legal:

Esta questão reformula e se baseia nessa:

Onde está a Regra de Zero adequada (manipulação de recursos)?