c++ - compilar - gcc compilador
constexpr no compilando en VC2013 (4)
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 compilador. 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 here 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.
Este código constexpr no está compilado en Visual Studio 2013 versión 12.0.21005.1 REL
¿Existe un compilador de Visual Studio más nuevo que funcione con constexpr?
#include <iostream>
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 compilación:
1>------ Build started: Project: Project1, Configuration: Debug Win32 ------ 1> Source.cpp 1>..../source.cpp(3): error C2144: syntax error : ''int'' should be preceded by '';'' 1>..../source.cpp(3): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
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
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
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 compilador 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 .