Je cherche un foncteur qui supprime son argument: existe quelque chose comme celui-ci dans std code>,
tr1 code> ou < code> boost code>? p> p>
3 Réponses :
c ++ 0x ajoutera Il a effectivement la même fonctionnalité que votre std :: par défaut_delete code> à la bibliothèque standard pour prendre en charge
std :: unique_ptr code>. p>.
delete_functor code>, mais est également spécialisé pour appeler
Suppr [] code> pour les objets de type tableau. P>
Qu'est-ce que std :: défaut_delete
@ user1095108: Si l'opérateur () code> est instancié, le programme serait mal formé. Le type avec lequel
par défaut_delete code> est instancié peut être incomplet au moment où le modèle de classe est instancié, mais il doit être complet lorsque l'opérateur
() code> est instancié.
@Jamesmcnellis Il faut donc instancer std :: unique_ptr
VOID * code> correctement?
@ user1095108: L'opérande de Supprimer code> peut ne pas être un
vide * code>. Si vous essayez de
Supprimer code> A
void * code>, le programme est mal formé.
Nous ne sommes pas autorisés à utiliser Boost dans ma compagnie et nous n'utilisons pas non plus C ++ 11, donc j'utilise ceci: Je pense que c'est ce que vous cherchez Pour. P> Vous pouvez également le recréer comme DTOR_FUN_T et remplacer "Supprimer _ PTR;" par " em> _ptr-> ~ _type ();" appeler seulement le DTOR. Ce serait le cas où vous avez utilisé un gestionnaire de mémoire et un placement nouveau, par exemple. P> P>
Si vous écrivez cela vous-même, BTW, puis avec
struct Delete_Functor {Modèle Opérateur vide () (T * P) {Supprimer P; }}; code>, vous n'avez pas à spécifier T lorsque vous en créez un.