2010-03-26 11 views
5

Nach einiger kämpfen ich intelligente Zeiger steigern bekommen verwaltet für Windows CE/Mobile-Warnstufe 4.steigern intelligente Zeiger und BOOST_NO_MEMBER_TEMPLATES

ich die am wenigsten widerstands Weg gefunden zu bauen, um loszuwerden, kompilieren Fehler und Warnungen zu sein

#define BOOST_NO_MEMBER_TEMPLATES 

Was bedeutet es eigentlich? Habe ich meine Seele dem Teufel verkauft? Wird die Hölle losbrechen wenn ich die Typen verwende?

Antwort

4

Es sollte keine schlechten Effekte per se geben, nur ein Verlust der Funktionalität.

Ein Mitglied Vorlage ist eine Member-Funktion, die eine Vorlage, zum Beispiel:

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

So erhalten Sie nicht undefiniertes Verhalten oder nichts, kann man einfach nicht programmieren Dinge in einer allgemeinsten Weise. Ich denke, eine definitive "ist diese schlechte" Antwort hängt davon ab, wofür genau sie verwendet wurde und was der Workaround war.

Mit Blick auf smart_ptr zum Beispiel der No-Mitglied-Vorlagen Version buchstäblich nimmt nur die Mitglieder Vorlagen aus, wie zum Beispiel:

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); 
} 

und ersetzt Y mit T, so dass Sie die Möglichkeit, für einig automatischen verlieren Konvertierungen.

Verwandte Themen