Шаблоны и указание не всех типов
От: 24  
Дата: 02.01.10 11:29
Оценка:
Рассмотрим такой случай:

template <typename T>
void func(T param) {
    ...
}


Эту функцию можно вызвать как с явным указанием типа (func<int>(i)), так и без него (func(i)) — тогда тип будет определён исходя их типа параметра.

А если у функции несколько шаблонных типов, и нужно указать только один из них, а остальные чтоб вывелись из типов параметров — такое как-то можно сделать? Например:

template <typename R, typename T>
R func(T param) {
    ...
}


Чтоб явно указать тип возвращаемого значения, а тип параметра определился автоматически?

P.S. Заранее извиняюсь за возможно глупый вопрос, я пока с шаблонами не очень дружу
Re: Шаблоны и указание не всех типов
От: remark Россия http://www.1024cores.net/
Дата: 02.01.10 12:17
Оценка: 2 (1)
Здравствуйте, 24, Вы писали:

24>А если у функции несколько шаблонных типов, и нужно указать только один из них, а остальные чтоб вывелись из типов параметров — такое как-то можно сделать? Например:


24>
24>template <typename R, typename T>
24>R func(T param) {
24>    ...
24>}
24>


24>Чтоб явно указать тип возвращаемого значения, а тип параметра определился автоматически?


Можно. Вот так и пиши, и тип параметра будет выводиться автоматически.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: Шаблоны и указание не всех типов
От: 24  
Дата: 02.01.10 12:38
Оценка: :)
Здравствуйте, remark, Вы писали:

R>Можно. Вот так и пиши, и тип параметра будет выводиться автоматически.


Как просто всё оказалось Я такой вариант даже не проверял, т.к. оно сразу выглядело слишком хорошо, чтоб быть правдой
Re[3]: Шаблоны и указание не всех типов
От: alexei_s  
Дата: 04.01.10 18:03
Оценка:
Единственное, не может выводится тип возвращаемого значения (непонятно почему кстати с учетом введения auto)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.