ConsteVal Functions and Template Parámetros Dependientes de los argumentos de funciones
en C 17, un parámetro de plantilla no puede depender de un argumento de función porque el compilador aún necesita para generar instrucciones de tiempo de ejecución para las funciones de no intex. compilar tiempo.
c 20 Funciones Consteval
c 20 Introduce funciones Consteval, que deben evaluarse en el tiempo de compilación, eliminando la restricción de tiempo de ejecución. Sin embargo, la pregunta sigue siendo: ¿Esto significa que los parámetros de la plantilla medio ahora pueden depender de los argumentos de la función?
sin asignaciones para los parámetros de plantilla dependientes
a pesar de la introducción de las funciones Consteval, la respuesta es no. El documento reconoce que los parámetros no están destinados a ser tratados como expresiones constantes de núcleo. Esto se debe a las posibles discrepancias de tipificación, como lo demuestra el ejemplo en el documento:
consteval int sqrsqr(int n) { return sqr(sqr(n)); // Not a constant-expression at this point, } // but that's okay.
Por lo tanto, los parámetros de la función nunca se considerarán expresiones constantes, evitando que los parámetros de la plantilla dependan de ellos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3