La différence entre l'instanciation et la spécialisation dans les modèles c++

Quelle est la différence entre la spécialisation et de l'instanciation dans le contexte de modèles C++. De ce que j'ai lu jusqu'à présent la suivante est ce que j'ai compris à propos de la spécialisation et de l'instanciation.

template <typename T>
struct Struct
{

     T x;
};

template<>
struct Struct <int> //specialization
{

    //code
};

int main()
{
   Struct <int> s; //specialized version comes into play
   Struct <float> r; //Struct <float> is instantiated by the compiler as shown below

}

Instanciation de Struct <float> par le compilateur

template <typename T=float>
struct Struct
{
    float x;
}

Est ma compréhension de l'instanciation d'un modèle et de la spécialisation correct?

InformationsquelleAutor Saurabh29729 | 2010-10-12