La norme dit 17 C++:exceptions sur le modèle des arguments non de type
Un modèle argument pour un modèle paramètre non-type doit être une expression constante convertie ...
tout
la valeur de l'expression constante ne doit pas être l'adresse de
- une chaîne littérale
- un sous-objet
- autres exeptions ...
par ma compréhension de la raison d'être de l'exception des chaînes littérales est qu'en fonction de la mise en œuvre il peut Soit que les occurrences de A<"abc">
dans différentes unités de traduction peuvent entraîner des instanciations différentes (comme les littéraux de chaîne ont une liaison interne), ou que les adresses de littéraux de chaîne peuvent être définies à l'adresse linki ng time (les littéraux de chaîne sont stockés dans une mémoire spéciale en lecture seule).
La première question est de savoir si ma compréhension de la raison d'être de l'exception des littéraux de chaîne est juste? Et la deuxième question est: quelle est la logique derrière l'exception des sous-objets d'objets qui ont une durée de stockage statique? Je soupçonnais que le problème pourrait être en alignement, mais l'alignement est fait dans le temps de compilation non?