En C++, le code suivant donne une erreur de compilation:
void destruct1 (int * item)
{
item->~int();
}
Ce code est presque le même, je viens de typedef int à un autre type et quelque chose de magique se produit:
typedef int myint;
void destruct2 (myint * item)
{
item->~myint();
}
Pourquoi le deuxième code fonctionne? Un int obtient un destructeur juste parce qu'il a été typedefed?
Dans le cas où vous vous demandez pourquoi on jamais aimerait le faire: Cela vient de refactoring de code C++. Nous sommes à la suppression de la norme de tas et de le remplacer avec selfmade piscines. Cela exige de nous d'appel de placement-les nouvelles et les destructeurs. Je sais que le fait d'appeler les destructeurs pour les types primitifs est inutile, mais nous voulons dans le code néanmoins dans le cas plus tard, nous avons remplacer les Gousses avec de vraies classes.
De découvrir que le nu int de ne pas travailler, mais typedefed n'était tout à fait une surprise.
Btw - j'ai une solution qui implique un modèle de fonctions. Nous venons de définition de type à l'intérieur du modèle et tout va bien.