Pergunta: Explorando a ausência de especializações de tipo de referência em std::optional
No padrão C , std::optional fornece um contêiner para manter um valor ou indicar sua ausência. No entanto, ao contrário de sua contraparte no Boost, std::optional carece de especializações para tipos de referência, deixando os usuários com uma pergunta: por quê? Este artigo investiga as razões por trás dessa decisão de design e explora opções alternativas disponíveis na biblioteca padrão para lidar com referências a valores opcionais.
Resposta: Abordando Preocupações e Perspectivas Futuras
Durante a proposta inicial (n3406) de valores opcionais, foram levantadas preocupações pelos membros do comitê em relação às referências opcionais. Posteriormente, em n3527, os autores propuseram separar as referências opcionais em uma proposta auxiliar para aumentar as chances de adoção de valores opcionais.
Embora as referências opcionais não tenham sido incluídas em C 14 devido a outros fatores, elas não foram rejeitadas por o comitê. Isso deixa aberta a possibilidade de incorporar referências opcionais em um futuro padrão C caso uma proposta seja enviada.
Alternativas para referenciar valores opcionais
Apesar da ausência de std:: especialização opcional para tipos de referência, a biblioteca padrão fornece uma alternativa para referenciar valores opcionais:
Em conclusão, a falta de especializações de tipo de referência em std::optional surgiu de preocupações durante o processo de proposta. No entanto, a comissão permanece aberta a considerar referências opcionais no futuro. Além disso, a biblioteca padrão fornece std::reference_wrapper<:optional>> como uma alternativa para referenciar valores opcionais nesse ínterim.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3