"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Pueden los parámetros de la plantilla en la función consteval C ++ 20 depender de los parámetros de la función?

¿Pueden los parámetros de la plantilla en la función consteval C ++ 20 depender de los parámetros de la función?

Publicado el 2025-04-16
Navegar:349

Can Template Parameters Depend on Function Arguments in C  20 Consteval Functions?

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.

Declaración de liberación Este artículo se reproduce en: 1729672748 Si hay alguna infracción, comuníquese con [email protected] para eliminarlo.
Último tutorial Más>

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