Escribo una función como parte de un experimento con Boost.Interprocess. En la función, asigno un literal de cadena a una variable declarada constexpr char*
. Cuando hago esto, obtengo:constexpr y advertencia de conversión obsoleta
warning: deprecated conversion from string constant to char* [-Wwrite-strings]
.
Mi comprensión de constexpr
es que en una declaración de variable se comporta como si la variable fuera declarada const
, pero con la estipulación añadida de que la variable debe inicializarse, y esa inicialización debe ser con una expresión constante.
Con este entendimiento esperaría que constexpr char*
se comporte como const char*
, y por lo tanto no emita la advertencia. ¿Me falta algo sobre cómo funciona constexpr
?
Estoy compilando con GCC 4.6.0 20110306 usando -std = C++ 0x.
Se agradecerá cualquier razonamiento para la advertencia emitida. ¡Gracias!
Gracias. Pasé por alto el otro 'const' de punteros. Cambié la declaración a 'constexpr const char *' y la advertencia desapareció. ¡Gracias! – mmoran