As strings de estilo C podem ser argumentos de modelo?
Sua tentativa de instanciar um modelo usando uma string de estilo C falha com um erro devido ao uso inválido de uma string literal como argumento de modelo.
Embora as strings de estilo C não possam servir diretamente como argumentos de modelo, existem abordagens alternativas:
Use um ponteiro para um String constante
Uma solução alternativa é usar um ponteiro para uma string constante como argumento do modelo:
template
struct X {
const char *GetString() const {
return str;
}
};
char global_string[] = "String";
int main() {
X x;
cout Atualização: literais de string como argumentos de modelo com C 11
Com C 11 e posterior, é possível usar literais de string como argumentos de modelo utilizando pacotes de caracteres:
template
struct X {
const char (*GetString)() {
return [](char*... s) { return s; }(c...);
}
};
int main() {
X x;
cout
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3