11
¿Por qué no compila esto:
¿Podría haber un problema con string
como tipo de devolución?Función que devuelve constexpr no compila
constexpr std::string fnc()
{
return std::string("Yaba");
}
¿Por qué no compila esto:
¿Podría haber un problema con string
como tipo de devolución?Función que devuelve constexpr no compila
constexpr std::string fnc()
{
return std::string("Yaba");
}
El constructor de std::string
que toma un puntero a char
no es constexpr
. En las funciones constexpr
, solo puede usar las funciones que son constexpr
.
Gracias, no sabía eso antes. – smallB
+1 y la razón por la que ese constructor no puede ser 'constexpr' es que tiene efectos secundarios (a saber, asignación) que no pueden llevarse a cabo en tiempo de compilación. –
¿Pero no crees que esto es (este ejemplo particular) un poco tonto? el literal de la cadena es const, por lo que creo que el ctor de la cadena debe hacerse constexpr para permitir tales construcciones en el futuro. – smallB