Instanziiertes Template anfordern
-
Guten Morgen
Gibt es in C++ die Möglichkeit, (natürlich zur Compiletime) eine Instanziierung eines Templates anzufordern? Sowas wie:
template</* Verschiedenes */> struct some_attribs { }; template</* hier wird eine Instanziierung von some_attribs gefordert */> struct foo { };
-
Was hast du genau vor?
Ich kann mir unter der Fragestellung nichts vorstellen
-
Ist Template Specialization vielleicht was du suchst?
Sonnst müsstest du uns dein Anliegen schon etwas ausführlicher schildern.
-
Explizite Instantiierungen kennst du wahrscheinlich?
Soll es genau dann instantiiert werden, wenn
foo
instantiiert wird? Mit welchen Argumenten?
-
Die eigentliche Frage ist doch warum du die explizite Instanziierung im Template Parameter brauchst. Bedenke, Templates werden durch Typen parametrisiert. Wenn du ein Template instanziieren musst, ist es keine Parameter mehr, sondern eine Spezialisierung.
Als Analogie:
Was du machen willst ist eine Funktion schreiben, von der du dann im nachhinein forderst das zB. Parameter 3 immer 42 sein muss. Das hat keinen Sinn.Willst du eher sowas?
template <typename T> struct foo { typedef some_attribs<T> foo_attribs; //... }
-
Das war mir nicht bewusst, dass die Fragestellung so missverständlich ist.
Also
some_attribs
ist quasi ein Parameterpaket undfoo
soll solche Parameterpakete (nur Instanziierungen vonsome_attribs
!) als Template-Argument annehmen.
-
Also doch partielle Spezialisierung??
// template <typename> struct foo; // foo nur für some_attrib template <typename... T> struct foo<some_attrib<T...>> { //... };