Paramètres de référence et expressions constantes
Dans le code C fourni, la fonction concaténer reçoit deux paramètres de référence de type std::array. Cependant, l'erreur rencontrée lors de la compilation concerne la fonction membre size du tableau, qui n'est pas considérée comme une expression constante du fait de son caractère de référence.
Selon le standard C, un noyau une expression constante est définie comme une expression qui ne s'évalue pas comme :
Une expression d'identifiant (c'est-à-dire une référence) à une variable ou un membre de données de type référence, sauf si la référence :
Dans ce cas, le paramètre de référence au tableau ne répond à aucun de ces critères. Sans une initialisation préalable, la référence ne peut pas être évaluée comme une expression constante.
Par conséquent, puisque la fonction membre size est appelée sur le paramètre de référence (c'est-à-dire data1.size()), elle ne peut pas être considérée comme une expression constante, entraînant une erreur de compilation.
Pour résoudre ce problème, il est recommandé d'utiliser directement les paramètres du modèle S1 et S2 pour déterminer la taille du tableau de résultats. au lieu de s'appuyer sur la fonction membre size des paramètres de référence :
auto result = std::array<uint8_t, S1 + S2>{};
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!