Überprüfen Sie, ob ein Mitglied mit enable_if existiert

Hier ist, was ich versuche zu tun:

template <typename T> struct Model
{
    vector<T> vertices ;

    #if T has a .normal member
    void transform( Matrix m )
    {
        each vertex in vertices
        {
          vertex.pos = m * vertex.pos ;
          vertex.normal = m * vertex.normal ;
        }
    }
    #endif

    #if T has NO .normal member
    void transform( Matrix m )
    {
        each vertex in vertices
        {
          vertex.pos = m * vertex.pos ;
        }
    }
    #endif
} ;

Ich habe gesehen, Beispiele mit enable_if, aber ich kann nicht verstehen, wie sich zu bewerben enable_if zu diesem problem, oder ob es auch angewendet werden kann.

Kommentar zu dem Problem - Öffnen
enable_if wird nicht verwendet, um zu überprüfen, ob ein Mitglied existiert, sondern es dient der Beseitigung von überlastungen. Kommentarautor: Pubby
Kann ich nicht es verwenden, um etwas zu tun (Vorschlag im edit oben)? Kommentarautor: bobobobo
Nein, Sie wollen eine static, wenn, die noch nicht existiert. Was Sie wollen, ist völlig möglich, es will einfach nicht verwenden Sie eine syntax wie die. Kommentarautor: Pubby

InformationsquelleAutor der Frage bobobobo | 2012-12-09

Schreibe einen Kommentar