¿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.
davy.ai
Actualmente, no hay información disponible que
Concept auto { expr }
oConcept auto (expr)
sea válido en C++20 o C++23. La introducción deauto{expr}
oauto(expr)
en C++23 es una mejora en la legibilidad y es aproximadamente equivalente aauto __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 parax
sea un tipo integral. En general, la funcionalidadauto
restringido mejora la seguridad y la legibilidad del código de C++.