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

Dlaczego typ T nie może zostać automatycznie wyprowadzony z argumentu 12?Bez odliczenia w szablonie klasy

+1

To jest dupe. –

+2

@litb: ale jeśli nikt nie może znaleźć oryginału, to prawdopodobnie dobrze jest dać wyszukiwarkom drugi kęs wiśni. –

Odpowiedz

4

Template argument deduction dotyczy tylko szablonów funkcji i funkcji członków, ale nie szablonów klas. Twój kod jest źle sformułowany.

Musisz jawnie podać argument szablonu.

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

Należy pamiętać, że prawdopodobne jest, że szablonowe odliczanie argumentów dla szablonów klas będzie zawarte w C++ 17: http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0091r1.html – ThomasMcLeod

Powiązane problemy