constexpr no compilando en VC2013
Este código constexpr no se compila en Visual Studio 2013 versión 12.0.21005.1 REL
¿Hay un compilador más nuevo de Visual Studio 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
4 answers
Microsoft publica una tabla de compatibilidad de C++11, bajo la cual constexpr
está claramente marcada como no disponible en Visual Studio 2013 .
Sin embargo, el CTP de noviembre de 2013 lo tiene.
Fuente: Google visual studio constexpr
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-28 12:37:50
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 atenerse a Visual Studio 2013, puede descargar el compilador Visual C++ Noviembre 2013 CTP que viene con algunas características nuevas, consulte MSDN blog. Desafortunadamente, Microsoft no tiene ninguna fusión con las últimas características de actualización de Visual Studio y las características de CTP y afirma claramente que no planean hacerlo.
Si lo queremos todo, tenemos que esperar a Visual Studio 2015, ver el blog de MSDN sobre VS 2015 Preview.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-01 08:55:18
Como es mencionado por los demás, Noviembre 2013 Customer Technology Preview(CTP) le dará acceso a constexpr
*
Tenga en cuenta que simplemente descargando el tendrá que cambiar su "Platform Toolset" a "Visual C++ Compiler 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 la plataforma".
*Hay un poco de conflicto información sobre qué porción de constexpr
realmente tiene acceso, pero definitivamente no es toda la definición estándar de constexpr
. Microsoft dice aquí que el CTP de noviembre de 2013 agrega:
constexpr
soporte (excepto para constructores)
Microsoft dice aquí que contiene:
constexpr
(excepto las funciones miembro)
Ni siquiera puedo probar si tiene soporte para funciones miembro, porque definitivamente no tiene soporte para cualquier tipo de construcción constexpr
. Por ejemplo este código da 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: En el momento de escribir este artículo, la vista previa de Visual Studio 2015 todavía no es compatible con la construcción constexpr
. Manteniendo mis dedos cruzados en el lanzamiento final.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-25 13:06:52
Necesita instalar VS2013 Update 5. (Yo estaba en la actualización 3 y no estaba funcionando) La cosa sobre "Nov 2013 CTP" era inaplicable, a partir de este escrito. Puedes hacerlo desde aquí: https://my.visualstudio.com
Y va a descargar, o : https://my.visualstudio.com/Downloads?q=visual%20studio%202013&wt.mc_id=o~msft~vscom~older-downloads
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-28 06:53:46