Creo que el compilador que trae por defecto vs13 soporta algunas cosas de C++11, en concreto los constexpr creo que no. No obstante, es cuestión de probar o buscar por internet.
constexpr hace que la expresión se intente dejar resuelta en tiempo de compilación (En caso de ser imposible, no pasa nada se resuelve en tiempo de ejecución). No es necesario abusar de esto pero permite resolver algunas limitaciones propias del lenguaje. Voy a poner el ejemplo más simple que se me ocurra. Esto es puramente un ejemplo las posibilidades que te ofrece esto son extremadamente grandes. Esto puede ser aplicado tanto a variables, como a funciones (bajo ciertas condiciones) o a objetos.
El ejemplo más simple:
Código C++:
Ver original// VLA- Para declarar un array de los de toda la vida, el índice debe ser conocido en tiempo de compilación. Aunque algunos compiladores den soporte a esto, en C++ está fuera del estándar hacer lo siguiente
#include<limits>
void incorrecto(){
const int indice=std::numeric_limits<int>::max();
int vla[indice]; // Al compilar desconozco su valor. Incorrecto.
}
void correcto(){
constexpr=std::numeric_limits<int>::max(); // Al compilar le da un valor
int vla[indice]; // Correcto.
}
Te dejo aquí algunos artículos que te pueden ser útiles si te interesa el tema (están en inglés):
http://www.cprogramming.com/c++11/c+...constexpr.html http://www.codeproject.com/Articles/...s-in-Cplusplus