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.

¿Existe alguna disposición que especifique la restricción del “tipo de retorno” en una especialización explícita de una plantilla de función?

Considere este ejemplo, es rechazado por todas las implementaciones. Sin embargo, no he encontrado ninguna disposición persuasiva en el estándar actual que especifique que esta declaración de especialización explícita sea inválida. Si existe, ¿cuál es la regla?

Además, la regla potencialmente relevante podría ser que
[temp.deduct.decl#2]

Si, para el conjunto de plantillas de funciones consideradas, no hay una coincidencia o hay más de una coincidencia después de que se haya considerado el orden parcial ([temp.func.order]), la deducción falla y, en los casos de declaración, el programa es inválido.

Creo que el significado de “coincidencia” no está suficientemente claro aquí, ya que “coincidencia” no define claramente nada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código proporcionado está especializando explícitamente la plantilla previamente declarada fun para el tipo int. Sin embargo, este ejemplo es rechazado por todas las implementaciones. No parece haber ninguna disposición específica en el estándar C++ actual que indique que esta declaración de especialización explícita es inválida.

    La regla relevante potencial se encuentra en [temp.deduct.decl#2], que establece que si no hay ninguna coincidencia o hay más de una coincidencia después de considerar la ordenación parcial, la deducción falla y el programa es inválido. Sin embargo, el significado de “coincidencia” no está claramente definido en este contexto.

    Por lo tanto, no está claro por qué este código es rechazado por todas las implementaciones, y puede requerir una investigación adicional o aclaración por parte del comité estándar de C++.

Comments are closed.