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.
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