Bonjour tout le monde,

Par pur curiosité, j'ai commencé à regarder l'implémentation de std::vector quand je suis tombé sur la fonction construct permettant d'allouer en mémoire un objet.
Cette dernière fait appelle à la fonction suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
template <class _T1>
inline void _Construct(_T1* __p) {
  new ((void*) __p) _T1(); // la ligne que je ne suis pas sûr de comprendre
}
J'interprète ce new de la façon suivante:
  1. Cast de T1* __p en void*
  2. Création d'un pointeur T1


Est-ce que je me trompe beaucoup?
Pourquoi ne pas utiliser le constructeur de recopie? (Parce que certaines classes n'en a pas ou est inaccessible?)

Merci pour tout

PS: J'ai trouvé ce code ici