2010-10-10 7 views
7
template<typename T> 
class A { 
    public: 
    A(T b) : a(b) { 
    } 
    private: 
    T a; 
}; 

A object(12); //Why does it give an error? 

Pourquoi le type T ne peut-il pas être déduit automatiquement de l'argument 12?Aucune déduction dans un modèle de classe

+1

Ceci est une dupe. –

+2

@litb: mais si personne ne trouve l'original, alors c'est probablement une bonne idée de donner aux moteurs de recherche une seconde bouchée de la cerise. –

Répondre

4

Template argument deduction s'applique uniquement aux modèles de fonction et de fonction membre, mais pas aux modèles de classe. Votre code est donc mal formé.

Vous devez fournir explicitement l'argument template.

A<int> object(12); //fine 
+0

Veuillez noter qu'il est probable que la déduction des arguments de modèle pour les modèles de classe sera incluse dans C++ 17: http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0091r1.html – ThomasMcLeod

Questions connexes