2016-12-31 2 views
1

Was ist der Anwendungsfall für Zeiger auf Member als Nicht-Typ-Vorlagenparameter?praktische Verwendung des Zeigers zu Element Nichttyp Vorlage Parameter

zum Beispiel:

class X { 
public: 
    int n; 
}; 


template <typename T, T nontype_param> 
class C 
{ 
public: 
    void doSomething() 
    { 
     //what goes here to access or use nontype_param? 
    } 
}; 

void test() 
{ 
    C<int X::*, &X::n> c; 
    c.doSomething(); 
} 
+0

Vielleicht für die Verwendung mit POD-Strukturen? Ohne irgendeinen Zusammenhang ist es wirklich schwer, etwas sicher zu sagen. –

+2

etwas wie 'X x; x. * nontype_param = 42; '? – Jarod42

+0

@Someprogrammerdude - etwas, das mir beim Lesen von Vorlagen begegnet ist. Habe nicht wirklich viel mehr Kontext als das, daher die Frage nach dem Anwendungsfall :) – tomatoRadar

Antwort

0

Zitate von Bjarne Buch:

Eine Art Template-Parameter kann als eine Art später in einer Vorlage Parameterliste verwendet werden. Zum Beispiel:

template<typename T, T default_value> 
class Vec { 
// ... 
}; 

Vec<int,42> c1; 
Vec<string,""> c2; 

Dies wird besonders nützlich, wenn mit einem Standard-Template-Argument (§25.2.5) kombiniert; für Beispiel:

template<typename T, T default_value = T{}> 
class Vec { 
    // ... 
}; 

Vec<int,42> c1; 
Vec<int> c11; // default_value is int{}, that is, 0 

Vec<string,"for tytwo"> c2; 
Vec<string> c22; // default_value is string{}; that is, "" 
+0

_ Zeiger auf Element Nichttyp Vorlage Parameter_ – Danh

Verwandte Themen