Code: Alles auswählen
template<typename EType> struct NestedInfos{};
Code: Alles auswählen
template<template<typename, typename> class EType, typename ENestedKeyType, typename ENestedValueType> struct NestedInfos<EType<ENestedKeyType, ENestedValueType> >{};
Bei NestedInfos<Dictionary<int, int>*> hingegen wird statt dem Template Template die template<typename EType> Version aufgerufen.
Lege ich nun eine explizite Spezialisierung für Zeigertypen für das Template Template an, so wie hier:
Code: Alles auswählen
template<template<typename, typename> class EType, typename ENestedKeyType, typename ENestedValueType> struct NestedInfos<EType<ENestedKeyType, ENestedValueType>*>{};
Warum muss ich denn hier explizit für Zeiger spezialisieren, damit für einen Template mit korrekter Anzahl Templateparrameter als Parameter auch eine Template Tempalte Version genutzt wird?
In Abwesenheit der Zeigerspezialisierung sollte doch das verbliebene Template Template klar am besten passen?