mam ten kod:Domyślne parametry szablonu: Dlaczego kompilator narzeka na brak określenia argumentu szablonu?
struct A{};
template<class T = A>
struct B {
void foo() {}
};
B b; //Error: missing template arguments before 'b'
//Error: expected ';' before 'b'
//More errors
b.foo()
Jeśli zrobię foo()
jako funkcję szablonu z tego samego szablonu „podpis”, kompilator nie narzekają, nie podając argumentów szablonu:
struct A {};
struct B {
template<class T = A>
void foo() {}
};
B b; //OK
b.foo()
Dlaczego więc muszę określić argument dla klasy szablonu z parametrem domyślnym, ale nie dla funkcji szablonu? Czy brakuje mi jakiejś subtelności?
Przyczyna jest spowodowana niewystarczającym odrzuceniem argumentu szablonu. Ale chcę wiedzieć dlaczego.
Czy brakuje tytułu z tytułu tego pytania? – Pointy
Tak. Brakowało słowa - narzekać. Dodano. – badmaash
Prawdopodobny duplikat * [Domyślne szablony szablonów funkcji] (http://stackoverflow.com/questions/2447458/default-template-arguments-for-function-templates) *. –