Héritage de modèles C++ et construction par copie : un static_assert déroutant
Cet article explore un problème troublant concernant les constructeurs de copie dans l’héritage de modèles C++. La classe `Derived` hérite de la classe `Base`, dont le constructeur de copie est supprimé. Cependant, `Derived` définit son propre constructeur de copie. Même si ce constructeur tente de copier l’objet `Base` non copiable, `std::is_copy_constructible` renvoie toujours vrai. Cela est dû au fait que le compilateur vérifie uniquement la présence d’un constructeur de copie non supprimé, et non sa capacité d’instanciation. L’auteur discute également des différences entre les constructeurs de copie explicitement définis et implicitement définis, ainsi que des implications du déplacement de la définition du constructeur de copie hors ligne.