Un littéral c'est un objet qui peut être construit au moment de la compilation, et dont la destruction consiste à ne rien faire. En sont donc exclus: - les fonctions - la plupart des classes et des unions, et les tableaux de ces classes et unions.
La contrainte sur les classes n'est pas négligeable. Par exemple std::string ou toute classe qui en contient n'est pas un litéral.
Depuis le C++20, les string peuvent être constexpr et donc des littérales.
Plus généralement, le C++ essaie d'avoir de plus en plus de choses qui sont constexpr et donc peuvent être des littérales.
Une fonction peut être constexpr et donc servir a construire un type littérale. Et le type d'un pointeur de fonction peut également être une littérale.
Par contre, il faut bien comprendre que si beaucoup de types peuvent être des types littéraux, ca veut pas dire qu'un type qui peut être un type littérale le sera.
constexpr int i = 123; // le type de i est un type littéral
int j = 123; // le type de j n'est pas un type littéral
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.
Discord NaN. Mon site.
Discord NaN. Mon site.