Необязательно в C: почему нет специализации для ссылочных типов?
Несмотря на наличие специализации для ссылочных типов в таких библиотеках, как Boost, C std::optional стандартной библиотеки не предоставляет такой возможности. Это решение вызвало вопросы о его обосновании и потенциальных альтернативных механизмах.
Обоснование отсутствия
Во время обсуждения n3406 (предложение о необязательности) были высказаны опасения относительно включения дополнительных ссылок. Признавая эти возражения, авторы n3527 выделили необязательные ссылки во вспомогательное предложение, чтобы повысить вероятность принятия стандартных необязательных значений. Хотя необязательность в конечном итоге не была включена в C 14 из-за несвязанных факторов, неодобрение комитетом необязательных ссылок не было проблемой.
Текущие альтернативы
Хотя std::optional не предлагает специализации для ссылочных типов, в стандартной библиотеке отсутствует эквивалентная конструкция, обеспечивающая семантику «ссылки на возможно существующий объект». Это может заставить разработчиков искать альтернативы:
Соображения на будущее
Хотя необязательные ссылки в настоящее время отсутствуют в Стандартная библиотека C, комитет не исключил их включение в будущем. Если будет подано официальное предложение, решение в конечном итоге будет зависеть от оценки комитетом достоинств предлагаемой функции.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3