constexpr no comstackndo en VC2013

Este código constexpr no está comstackdo en Visual Studio 2013 versión 12.0.21005.1 REL

¿Existe un comstackdor de Visual Studio más nuevo que funcione con constexpr?

#include  constexpr int factorial(int n) { return n <= 1 ? 1 : (n * factorial(n - 1)); } int main(void) { const int fact_three = factorial(3); std::cout << fact_three << std::endl; return 0; } 

salida de la comstackción:

  1> ------ Build started: Project: Project1, Configuration: Debug Win32 ------
     1> Source.cpp
     1> .... \ source.cpp (3): error C2144: error de syntax: 'int' debe ir precedido por ';'
     1> .... \ source.cpp (3): error C4430: especificador de tipo faltante - int asumido.  Nota: C ++ no es compatible con default-int
     ========== Build: 0 exitoso, 1 fallido, 0 actualizado, 0 omitido ========== 

Herb Sutter menciona constexpr en su blog, pero no está claro en qué versión funciona / funcionará. http://herbsutter.com/2013/09/09/visual-studio-2013-rc-is-now-available/#comment-13521

Microsoft publica una tabla de compatibilidad de C ++ 11, bajo la cual constexpr está claramente marcado como no disponible en Visual Studio 2013 .

Sin embargo, el CTP de noviembre de 2013 lo tiene.

Fuente: Google visual studio constexpr

constexpr no es compatible con Visual Studio 2013 RTM, consulte la tabla de compatibilidad . Esto no solo es cierto para la versión RTM, sino también para las actualizaciones de Visual Studio.

Si desea seguir con Visual Studio 2013, puede descargar el comstackdor C ++ de Visual C ++ de noviembre de 2013 que viene con algunas características nuevas, consulte el blog de MSDN . Desafortunadamente, Microsoft no se ha fusionado con las últimas características de actualización de Visual Studio y las características de CTP, y afirma claramente que no tiene previsto hacerlo.

Si lo queremos todo, tenemos que esperar a Visual Studio 2015, ver el blog de MSDN sobre VS 2015 Preview .

Como lo mencionaron los demás, noviembre de 2013 Customer Technology Preview (CTP) le dará acceso a constexpr *

Tenga en cuenta que solo con la descarga necesitará cambiar su “Platform Toolset” a “CTP Visual C ++ Nov 2013 CTP (CTP_Nov2013)” para usar el nuevo comstackdor. Puede hacerlo abriendo las “Páginas de propiedades” de su proyecto Y yendo a: “Propiedades de configuración”> “General” y luego cambiando el “Conjunto de herramientas de plataforma”.

* Hay un poco de información contradictoria sobre a qué porción de constexpr tienes acceso, pero definitivamente no es toda la definición de constexpr de los estándares. Microsoft dice aquí que el CTP de noviembre de 2013 agrega:

soporte de constexpr (excepto para constructores)

Microsoft dice aquí que contiene:

constexpr (excepto las funciones de miembro)

Ni siquiera puedo probar si tiene soporte para funciones miembro, porque definitivamente no tiene soporte para ningún tipo de construcción constexpr . Por ejemplo, este código proporciona este error con el CTP de noviembre de 2013:

error C2127: inicialización ilegal de la entidad ‘constexpr’ con una expresión no constante

Una nota adicional: al momento de escribir el Visual Studio 2015 Preview aún no es compatible constexpr construcción constexpr . Manteniendo mis dedos cruzados en el lanzamiento final.

Necesita instalar la Actualización 5 de VS2013 (estaba en la Actualización 3 y no estaba funcionando). La cosa sobre “CTP de noviembre de 2013” era inaplicable, al momento de escribir esto. Puede hacerlo yendo aquí: https://my.visualstudio.com

e ir a descargar, o: https://my.visualstudio.com/Downloads?q=visual%20studio%202013&wt.mc_id=o~msft~vscom~older-downloads