банальный вопрос по си++ templates

Maurog

не догнал в каком случает параметры темплейта автоматически определяются компилятором, а в каких случаях надо явно указывать?
для классов обязательно указывать, а для функций-не обязательно?

Maurog

наверное, неясно выразился.

template <class T>
class A {
public:
T i;
A (T& x): i(x) {}
};

выражение

int f;
A x(f);

не компилируется.
Это компилируется:

int f;
A<int> x(f);

Для функции все в порядке:

template <class T>
int AA(T&x) {
cout << " x= " << x;
return 0;
}

Оба вызова корректны:

int k=9;
AA(k);
AA<int>(k);

Интересуют общие положения по этой теме. Когда и в каких случаях.

okunek

для классов обязательно указывать, а для функций-не обязательно?
угуг...

mira-bella

для класса обязательно за исключением случая, когда есть значение параметра по-умолчанию, но писать угловые скобки обязательно в любом случае.

Maurog

ага , я понял
исключение подходит под правило
всем спасибо.
Оставить комментарий
Имя или ник:
Комментарий: