банальный вопрос по си++ templates
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);
Интересуют общие положения по этой теме. Когда и в каких случаях.
для классов обязательно указывать, а для функций-не обязательно?угуг...
для класса обязательно за исключением случая, когда есть значение параметра по-умолчанию, но писать угловые скобки обязательно в любом случае.
![](/images/graemlins/wink.gif)
исключение подходит под правило
![](/images/graemlins/wink.gif)
всем спасибо.
Оставить комментарий
Maurog
не догнал в каком случает параметры темплейта автоматически определяются компилятором, а в каких случаях надо явно указывать?для классов обязательно указывать, а для функций-не обязательно?