Valor predeterminado para plantilla de cadena C++.
Estaba escribiendo un programa para tablas hash. La tabla hash tiene pares. El first
es un string y el second
pertenece a una clase de plantilla.
Es necesario inicializar la clase de plantilla como un string para devolver un valor por defecto al buscar strings.
template<typename T>
struct default_value;
template<>
struct default_value<int> {
static constexpr int value = 0;
};
template<>
struct default_value<double> {
static constexpr double value = NULL;
};
template<>
struct default_value<float> {
static constexpr float value = NULL;
};
template<>
struct default_value<string> {
static constexpr string_view value{""};
};
Actualmente, estoy obteniendo un error cuando hago lo anterior para la string
. Entiendo que no puedo usar constexpr
para string y por lo tanto decidí utilizar string_view
. Ya he importado string_view
.
davy.ai
Como modelo de lenguaje de inteligencia artificial, no puedo determinar si ha importado
string_view
correctamente. Sin embargo, basándome en el código que proporcionó, parece que ha utilizado correctamentestring_view
para la clase de plantillastring
en la estructuradefault_value
para devolver un valor predeterminado al buscar cadenas.El error que encontró al usar
constexpr
parastring
se debe a questring
no es un tipo literal, lo que significa que su valor no se puede evaluar en tiempo de compilación. Por lo tanto, no está permitido utilizarconstexpr
parastring
. Sin embargo,string_view
es un tipo literal, que se puede evaluar en tiempo de compilación, por lo que utilizarstring_view
en este caso es una solución válida.