"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo implementar `make_unique` en C++ 11 cuando su compilador no lo admite?

¿Cómo implementar `make_unique` en C++ 11 cuando su compilador no lo admite?

Publicado el 2024-11-08
Navegar:263

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

Recreando la función make_unique en C 11

El estándar C 11 introduce una potente función, make_unique, para crear punteros únicos. Sin embargo, algunos pueden encontrar el problema de que su compilador no admite esta función. Este artículo proporciona una solución alternativa para implementar make_unique en C 11.

Según la pregunta, el prototipo de la función make_unique es:

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

El siguiente código proporciona una implementación de make_unique:

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

Esta implementación utiliza la función std::forward para garantizar que el reenvío de argumentos se produzca correctamente para todo tipo de argumentos, incluidas las referencias y las referencias de rvalue.

Tenga en cuenta que si su compilador admite C 11 pero no la función make_unique, aún puedes usar esta implementación como solución alternativa. Alternativamente, si tiene acceso a un compilador que admita C 14 o posterior, simplemente puede aprovechar la función estándar std::make_unique para este propósito.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3