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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!