«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Вот несколько вариантов заголовков, основанных на вопросах и посвященных основной проблеме: * C++ std::optional: Почему нет специализации для ссылочных типов? (прямо и по делу) * Ссылочные типы в C++ std::option

Вот несколько вариантов заголовков, основанных на вопросах и посвященных основной проблеме: * C++ std::optional: Почему нет специализации для ссылочных типов? (прямо и по делу) * Ссылочные типы в C++ std::option

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

Here are a few question-based title options, focusing on the core issue:

* C   std::optional: Why No Specialization for Reference Types? (Direct and to the point)
* Reference Types in C   std::optional: Missing Feature or Deliberate Design Choice? (Highl

Необязательно в C: почему нет специализации для ссылочных типов?

Несмотря на наличие специализации для ссылочных типов в таких библиотеках, как Boost, C std::optional стандартной библиотеки не предоставляет такой возможности. Это решение вызвало вопросы о его обосновании и потенциальных альтернативных механизмах.

Обоснование отсутствия

Во время обсуждения n3406 (предложение о необязательности) были высказаны опасения относительно включения дополнительных ссылок. Признавая эти возражения, авторы n3527 выделили необязательные ссылки во вспомогательное предложение, чтобы повысить вероятность принятия стандартных необязательных значений. Хотя необязательность в конечном итоге не была включена в C 14 из-за несвязанных факторов, неодобрение комитетом необязательных ссылок не было проблемой.

Текущие альтернативы

Хотя std::optional не предлагает специализации для ссылочных типов, в стандартной библиотеке отсутствует эквивалентная конструкция, обеспечивающая семантику «ссылки на возможно существующий объект». Это может заставить разработчиков искать альтернативы:

  • Auto_ptr: Несмотря на то, что в C 11 он устарел, std::auto_ptr может имитировать ссылку с семантикой владения. Однако его использование не рекомендуется из-за таких проблем, как утечки памяти.
  • boost::optional: Boost предоставляет специализированную дополнительную реализацию, поддерживающую ссылочные типы. Он предлагает ту же семантику, что и std::optional, но требует включения библиотеки Boost.

Соображения на будущее

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

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

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

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

Copyright© 2022 湘ICP备2022001581号-3