«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать make_unique в C++11, если ваш компилятор его не поддерживает?

Как реализовать make_unique в C++11, если ваш компилятор его не поддерживает?

Опубликовано 8 ноября 2024 г.
Просматривать:956

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

Воссоздание функции make_unique в C 11

Стандарт C 11 представляет мощную функцию make_unique для создания уникальных указателей. Однако некоторые могут столкнуться с проблемой, что их компилятор не поддерживает эту функцию. В этой статье представлен обходной путь для реализации make_unique в C 11.

В соответствии с вопросом, прототип функции make_unique:

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

Следующий код обеспечивает реализацию make_unique:

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

Эта реализация использует функцию std::forward, чтобы гарантировать, что пересылка аргументов происходит правильно для всех типов аргументов, включая ссылки и ссылки rvalue.

Обратите внимание: если ваш компилятор поддерживает C 11, но не функцию make_unique, вы все равно можете использовать эту реализацию в качестве обходного пути. В качестве альтернативы, если у вас есть доступ к компилятору, поддерживающему C 14 или более позднюю версию, вы можете просто использовать для этой цели стандартную функцию std::make_unique.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3