"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como implementar `make_unique` em C++ 11 quando seu compilador não oferece suporte?

Como implementar `make_unique` em C++ 11 quando seu compilador não oferece suporte?

Publicado em 2024-11-08
Navegar:953

How to Implement `make_unique` in C  11 When Your Compiler Doesn\'t Support It?

Recriando a função make_unique em C 11

O padrão C 11 introduz uma função poderosa, make_unique, para criar ponteiros exclusivos. No entanto, alguns podem encontrar o problema de seu compilador não suportar esta função. Este artigo fornece uma solução alternativa para implementar make_unique em C 11.

De acordo com a pergunta, o protótipo da função make_unique é:

template unique_ptr make_unique( Args&&&... args );

O código a seguir fornece uma implementação de make_unique:

template
std::unique_ptr make_unique(Args&&... args)
{
    return std::unique_ptr(new T(std::forward(args)...));
}

Esta implementação usa a função std::forward para garantir que o encaminhamento de argumentos ocorra corretamente para todos os tipos de argumentos, incluindo referências e referências de rvalue.

Observe que se o seu compilador suportar C 11, mas não a função make_unique, você ainda pode usar esta implementação como solução alternativa. Alternativamente, se você tiver acesso a um compilador que suporte C 14 ou posterior, você pode simplesmente aproveitar a função padrão std::make_unique para essa finalidade.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3