Страницы

Поиск по вопросам

среда, 9 января 2019 г.

Шаблонная функция

Есть шаблонная функция:
template void function(T1 a, T1 b, T2 c) { ... }
Требуется, чтобы 3 параметр имел дефолтное значение. То есть хочется, чтобы было как-то так:
template void function(T1 a, T1 b, T2 c = С) { ... }
Но при вызове функции от 2 аргументов выдает ошибку. Как я понимаю дело в втором параметре шаблона. Нужно как-то тоже ему придать дефолтное значение.


Ответ

Как бы это выразиться... Вы вызываете f(a,b) - и что должен делать компилятор, не имея никакой информации о типе третьего параметра? Тип тоже надо умолчать...
Что-то вроде:
template void f(T a, T b, U c = U(0)) { cout << a << " " << b << endl; cout << typeid(c).name() << endl; cout << c << endl;
}
int main() { f(0,1,3); f(0,1,3.0); f(0,1); }

Комментариев нет:

Отправить комментарий