Ich habe Probleme, ein inneres Template zu spezialisieren, wenn alle Parameter bekannt sind. Hier ist ein Beispiel:Spezialisiertes inneres Template mit Standardparametern
template < typename T0 >
struct outer
{
template < typename T1 = void, typename T2 = void >
struct inner
{
typedef T1 type;
};
};
template < typename T0 >
template < typename T1 >
struct outer<T0>::inner<double,T1> { typedef int type; };
Das funktioniert gut. Wenn ich wie so stattdessen die innere Vorlage angeben, nicht wahr:
template < typename T0 >
template < >
struct outer<T0>::inner<double,void> { typedef int type; };
Dafür erhalte ich die Fehlermeldung „ungültige explizite Spezialisierung vor‚>‘Token ... umschließenden Klasse Vorlagen nicht explizit spezialisiert sind .. .Template-Parameter, die in der Teilspezialisierung nicht verwendet werden: ... T0 ". Nicht sicher, dass WTAF hier vorgeht.
Ich habe auch versucht dies:
template < typename T0 >
struct outer<T0>::inner<double,void> { typedef int type; };
ich diese und die Fehlermeldung nicht überraschend, zum Scheitern verurteilt erwarten ist. Es war: "zu wenige Template-Parameter-Listen".
Also, was ist der richtige Weg, dies zu tun? Ich kann natürlich herumhacken, aber wenn ich nicht muss, würde ich es nicht bevorzugen.
bezogen werden: http://stackoverflow.com/questions/9219157/why-cant-i-specialize-the-nested-template -Mitglied ohne Spezialisierung -einschließen? lq = 1 –
Hmm ... Ich habe eine Suche gemacht, aber das tauchte nicht auf. Darf vorher nicht die richtige Ziege geopfert haben. –