es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es válido el autolanzamiento restringido?

Desde C++20, se introdujo el auto restringido a través de:

c++
Concept auto identifier = init

Lo que significa, por ejemplo:
c++
std::integral auto x = 10;

es válido.

Además, para nuevas expresiones, se permite que el concepto se asocie con auto:
c++
new Concept auto { expr };
// o:
new Concept auto ( expr );

auto{expr} o auto(expr) se introdujo en C++23 como equivalente aproximado a:
c++
auto __temp { expr };
return __temp;

¿Significa que Concept auto { expr } o Concept auto ( expr ) también es válido?

El caso de uso sencillo sería útil al intentar crear una copia de decaimiento mientras se verifica que sus operaciones estén comprobadas por la restricción.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Actualmente, no hay información disponible que Concept auto { expr } o Concept auto (expr) sea válido en C++20 o C++23. La introducción de auto{expr} o auto(expr) en C++23 es una mejora en la legibilidad y es aproximadamente equivalente a auto __temp { expr }; return __temp;. Sin embargo, es mejor estar atentos a cualquier actualización o revisión futura en las especificaciones de C++.

    La funcionalidad auto restringido introducida en C++20 permite una fácil creación de copias de decadencia mientras se verifican sus operaciones mediante restricciones. El concepto se especifica antes del identificador para imponer restricciones en la deducción del tipo. Por ejemplo, std::integral auto x = 10; asegura que la deducción de tipo para x sea un tipo integral. En general, la funcionalidad auto restringido mejora la seguridad y la legibilidad del código de C++.

Comments are closed.