¿Por qué necesitamos marcar las funciones como constexpr?
C ++ 11 permite funciones declaradas con elconstexpr
Especificador que se utilizará en expresiones constantes como argumentos de plantilla. Hay requisitos estrictos sobre lo que se permite serconstexpr
; Básicamente, una función de este tipo encapsula solo una subexpresión y nada más. (Edit: esto está relajado en C ++ 14 pero la pregunta es válida).
¿Por qué requerir la palabra clave en absoluto?¿Qué se gana?
Ayuda a revelar la intención de una interfaz, perono hace Valide esa intención, garantizando que una función sea utilizable en expresiones constantes. Después de escribir unconstexpr
función, un programador todavía debe:
Contrariamente a la intención reveladora, decorar funciones conconstexpr
puede agregar una falsa sensación de seguridad ya que las restricciones sintácticas tangenciales se verifican al ignorar la restricción semántica central.
En breve: ¿Habría algún efecto indeseable en el idioma siconstexpr
¿En declaraciones de función eran meramente opcionales? ¿O habría algún efecto en absoluto en cualquier programa válido?