2010-10-10 12 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? 

Warum kann der Typ T nicht automatisch vom Argument 12 abgeleitet werden?Kein Abzug in einer Klassenvorlage

+1

Dies ist ein Betrogener. –

+2

@litb: aber wenn niemand das Original finden kann, dann ist es wahrscheinlich eine gute Idee, den Suchmaschinen einen zweiten Bissen von der Kirsche zu geben. –

Antwort

4

Template argument deduction gilt nur für Funktions- und Memberfunktionsvorlagen, aber nicht für Klassenvorlagen. Dein Code ist also schlecht geformt.

Sie müssen das Template-Argument explizit angeben.

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

Bitte beachten Sie, dass die Vorlagenargumentableitung für Klassenvorlagen wahrscheinlich in C++ 17 enthalten ist: http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0091r1.html – ThomasMcLeod

Verwandte Themen