2010-11-03 37 views

Répondre

4

Réponse courte:

Non, jusqu'à ce que l'organe statique est const et est de type intégral ou énumération.

Réponse longue:

9.4.2 $/4 - « Si un membre de données statique est de type const énumération intégrale ou const , sa déclaration dans la définition de classe peut spécifier un -initialiseur constante qui doit être une expression constante intégrale (5.19). dans ce cas, le membre peut apparaître dans expressions constantes intégrales. le membre est défini encore dans un champ d'espace de noms si elle est utilisée dans le progra m et la portée de l'espace de noms ne doivent pas contenir d'initialisation . "

3

Pas pour un membre de données statiques de type classe, comme dans votre exemple.

9.4.2/2:

La déclaration d'une donnée statique membre dans sa définition de classe n'est pas une définition ... La définition pour un membre de données statiques doit apparaître dans un espace de noms champ englobant la définition de classe du membre.

9.4.2/4:

Si un membre de données statique est const de type énumération intégrale ou const, sa déclaration dans la définition de classe peut spécifier un -initialiseur constante qui doit être une expression constante intégrale (5.19). Dans ce cas, le membre peut apparaître dans expressions constantes intégrées. Le membre doit toujours être défini dans une étendue d'espace nom s'il est utilisé dans le programme et la définition d'étendue d'espace de noms ne doit pas contenir d'initialiseur .