myTemplateTemplate prevede che il secondo parametro template sia un modello con un argomento. myDefaultTemplate è un modello con due argomenti e il secondo argomento ha il tipo predefinito int.Perché il modello con argomenti modello predefiniti non può essere utilizzato come modello con meno argomenti del modello in Parametri modello di modello
In VS2008, ottengo l'errore di compilazione: la lista dei parametri modello per modello di classe 'myDefaultTemplate' non corrisponde l'elenco dei parametri del modello per il parametro template 'TT'
Quindi, perché non è possibile utilizzare il myDefaultTemplate come modello con un solo argomento? C'è qualche impatto negativo se il compilatore C++ lo supporta?
template
<typename T1, typename T2 = int>
class
myDefaultTemplate{
T1 a;
T2 b;
};
template
<typename T1, template<typename T2> class TT>
class
myTemplateTemplate{
T1 a;
TT<T1> b;
};
int main(int argc, char* argv[]){
myTemplateTemplate<int, myDefaultTemplate> bar; //error here:
return 0;
}
Si dovrebbe ottenere un badge per "Domanda che utilizza la parola 'modello' più volte" :) – Praetorian