Воссоздание функции 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