Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/11/2015, 14:58
Avatar de xKuZz
xKuZz
 
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Diferencia entre #define y const en c++

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
  1. // 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
  2. #include<limits>
  3. void incorrecto(){
  4. const int indice=std::numeric_limits<int>::max();
  5. int vla[indice]; // Al compilar desconozco su valor. Incorrecto.
  6. }
  7.  
  8. void correcto(){
  9. constexpr=std::numeric_limits<int>::max(); // Al compilar le da un valor
  10. int vla[indice]; // Correcto.
  11. }

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