2010-03-26 7 views
5

Après quelques débattant j'ai réussi à stimuler les pointeurs intelligents pour construire pour Windows CE/Mobile au niveau d'alerte 4.stimuler les pointeurs intelligents et BOOST_NO_MEMBER_TEMPLATES

J'ai trouvé la moindre résistance moyen de se débarrasser des erreurs de compilation et avertissements être

#define BOOST_NO_MEMBER_TEMPLATES 

Qu'est-ce que cela signifie réellement? Ai-je vendu mon âme au diable? Est-ce que tout l'enfer se déchaîner quand je réellement utiliser les types?

Répondre

4

Il ne devrait pas y avoir de mauvais effets en soi, juste une perte de fonctionnalité.

Un modèle de membre est une fonction membre qui est un modèle, par exemple:

struct foo 
{ 
    template <typename T> 
    void i_am_not_supported_sometimes(void); 
}; 

afin de ne pas un comportement non défini ou quoi que ce soit, vous programme ne peut pas les choses de façon plus générique. Je pense qu'une réponse définitive «est-ce si mauvais» dépend exactement de la raison pour laquelle elle a été utilisée et de ce qu'était le work-around.

Regarder smart_ptr, par exemple, la version non-membres-modèles littéralement prend juste les modèles membres, tels que:

template<class Y> 
explicit shared_ptr(Y * p): px(p), pn(p) // Y must be complete 
{ 
    boost::detail::sp_enable_shared_from_this(this, p, p); 
} 

et remplace Y avec T, vous perdez la possibilité pour certains automatique conversions

Questions connexes