Question sur la classe std::array
Bonjour,
il y a une petite subtilité qui m'échappe dans la classe std::array telle qu'elle est fournie dans la distribution de Visual Studio 2010. Concrètement, elle est déclarée comme ceci (j'ai simplifié pour plus de lisibilité) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #ifndef _ARRAY_
#define _ARRAY_
template<class _Ty,
size_t _Size>
class array
{ // fixed size array of values
public:
enum {_EEN_SIZE = _Size}; // helper for expression evaluator
_Ty _Elems[_Size == 0 ? 1 : _Size];
};
#endif /* _ARRAY_ */ |
Je ne comprends pas ce qui se passe lorsqu'on instancie un nouvel array d'une taille suffisamment grande pour que _Elems ne soit pas allouable (plus assez de mémoire vive). Comment ce cas est-il géré ici?
J'ai une autre question : à quoi sert l'énumération ici? Le commentaire semble indiquer que cela aide à l'évaluation de l'expression _Size mais cela m'échappe un peu.
Merci à tous pour votre aide!